Jump to content

Circular primes: Difference between revisions

refactored the code to reduce stack juggling in circular?
(refactored the code to reduce stack juggling in circular?)
Line 690:
 
: prime? ( n -- f )
dup 2 < if drop false exit then
dup 2 mod 0= if drop2 = exit falsethen
dup 3 mod 0= if 3 = exit then
else
dup 5 mod 0= dupif 15 and 0= exit then
else wheel-prime? ;
if 2 =
else dup 3 mod 0=
if 3 =
else dup 5 mod 0=
if 5 =
else wheel-prime?
then
then
then
then ;
 
: log10^ ( n -- 10^[log n], log n )
Line 709 ⟶ 700:
1 0 rot
begin dup 9 > while
swap>r 1+ swap rot 10 * -rot swap 1+ r> 10 /
repeat drop ;
 
Line 716 ⟶ 707:
: rotate ( n -- n )
dup log10^ drop /mod swap 10 * + ;
 
: prime-rotation? ( p0 p -- f )
tuck <= swap prime? and ;
 
: circular? ( n -- f ) \ assume n is not a multiple of 2, 3, 5
dup wheel-prime? invert
if drop false exit
then dup >r \ save original value for comparisontrue
dupover log10 swap begin over 0> while?do
swap rotate dup r@ <j over prime-rotation? invert orrot ifand
loop 2dropnip rdrop false exit;
then swap 1- swap
repeat 2drop rdrop true ;
 
: .primes
Line 744 ⟶ 736:
2 3 5 7 11 13 17 37 79 113 197 199 337 1193 3779 11939 19937 193939 199933
</pre>
 
=={{header|FreeBASIC}}==
<lang freebasic>#define floor(x) ((x*2.0-0.5)Shr 1)
357

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.