Taxicab numbers: Difference between revisions

Content added Content deleted
(Add Swift)
No edit summary
Line 1,208: Line 1,208:
2006 : {1677646971, [{891, 990}, {99, 1188}]}
2006 : {1677646971, [{891, 990}, {99, 1188}]}
</pre>
</pre>
=={{header|Fortran}}==
<lang fortran>
! A non-bruteforce approach
PROGRAM POOKA
IMPLICIT NONE
!
! PARAMETER definitions
!
INTEGER , PARAMETER :: NVARS = 25
!
! Local variables
!
REAL :: f1
REAL :: f2
INTEGER :: hits
INTEGER :: s
INTEGER :: TAXICAB


hits = 0
s = 0
f1 = SECOND()
DO WHILE ( hits<NVARS )
s = s + 1
hits = hits + TAXICAB(s)
END DO
f2 = SECOND()
PRINT * , 'elapsed time = ' , f2 - f1 , 'For ' , NVARS , ' Variables'
STOP
END PROGRAM POOKA
FUNCTION TAXICAB(N)
IMPLICIT NONE
!
! Dummy arguments
!
INTEGER :: N
INTEGER :: TAXICAB
INTENT (IN) N
!
! Local variables
!
INTEGER :: holder
INTEGER :: oldx
INTEGER :: oldy
INTEGER :: s
INTEGER :: x
INTEGER :: y
real*8,parameter :: xpon=(1.0D0/3.0D0)
!
x = 0
holder = 0
oldx = 0
oldy = 0
TAXICAB = 0
y = INT(N**xpon)
DO WHILE ( x<=y )
s = x**3 + y**3
IF( s<N )THEN
x = x + 1
ELSE IF( s>N )THEN
y = y - 1
ELSE
IF( holder==s )THEN ! Print the last value and this one that correspond
WRITE(6 , 34)s , '(' , x**3 , y**3 , ')' , '(' , oldx**3 , oldy**3 , ')'
34 FORMAT(1x , i12 , 10x , 1A1 , i12 , 2x , i12 , 1A1 , 10x , 1A1 , i12 , 2x ,&
& i12 , 1A1)
TAXICAB = 1 ! Indicate that we found a Taxi Number
END IF
holder = s ! Set to the number that appears a potential cab number
oldx = x ! Retain the values for the 2 cubes
oldy = y
x = x + 1 ! Keep looking
y = y - 1
END IF
END DO
RETURN
END FUNCTION TAXICAB
</lang>
{{out}}
<pre> Print first 25 numbers
1729 ( 729 1000) ( 1 1728)
4104 ( 729 3375) ( 8 4096)
13832 ( 5832 8000) ( 8 13824)
20683 ( 6859 13824) ( 1000 19683)
32832 ( 5832 27000) ( 64 32768)
39312 ( 3375 35937) ( 8 39304)
40033 ( 4096 35937) ( 729 39304)
46683 ( 19683 27000) ( 27 46656)
64232 ( 17576 46656) ( 4913 59319)
65728 ( 29791 35937) ( 1728 64000)
110656 ( 46656 64000) ( 64 110592)
110808 ( 19683 91125) ( 216 110592)
134379 ( 54872 79507) ( 1728 132651)
149389 ( 24389 125000) ( 512 148877)
165464 ( 54872 110592) ( 8000 157464)
171288 ( 13824 157464) ( 4913 166375)
195841 ( 10648 185193) ( 729 195112)
216027 ( 10648 205379) ( 27 216000)
216125 ( 91125 125000) ( 125 216000)
262656 ( 46656 216000) ( 512 262144)
314496 ( 27000 287496) ( 64 314432)
320264 ( 32768 287496) ( 5832 314432)
327763 ( 132651 195112) ( 27000 300763)
373464 ( 157464 216000) ( 216 373248)
402597 ( 175616 226981) ( 74088 328509)
elapsed time = 4.68750000E-02 For 25 Variables
</pre>
=={{header|FreeBASIC}}==
=={{header|FreeBASIC}}==
<lang freebasic>' version 11-10-2016
<lang freebasic>' version 11-10-2016