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 |