Smarandache prime-digital sequence: Difference between revisions

Content added Content deleted
(add freebasic)
(Added Forth solution)
Line 526: Line 526:
10000th member: 273322727
10000th member: 273322727
100000th member: 23325232253
100000th member: 23325232253
</pre>

=={{header|Forth}}==
<lang forth>: is_prime? ( n -- flag )
dup 2 < if drop false exit then
dup 2 mod 0= if 2 = exit then
dup 3 mod 0= if 3 = exit then
5
begin
2dup dup * >=
while
2dup mod 0= if 2drop false exit then
2 +
2dup mod 0= if 2drop false exit then
4 +
repeat
2drop true ;

: next_prime_digit_number ( n -- n )
dup 0= if drop 2 exit then
dup 10 mod
dup 2 = if drop 1+ exit then
dup 3 = if drop 2 + exit then
dup 5 = if drop 2 + exit then
drop
10 / recurse 10 * 2 + ;

: spds_print ( n -- )
0
begin
over 0 >
while
next_prime_digit_number
dup is_prime? if dup . swap 1- swap then
repeat
2drop cr ;

: spds_nth ( n -- n )
0
begin
over 0 >
while
next_prime_digit_number
dup is_prime? if swap 1- swap then
repeat
swap drop ;

." First 25 SPDS primes:" cr
25 spds_print

." 100th SPDS prime: "
100 spds_nth . cr

." 1000th SPDS prime: "
1000 spds_nth . cr</lang>

{{out}}
<pre>
First 25 SPDS primes:
2 3 5 7 23 37 53 73 223 227 233 257 277 337 353 373 523 557 577 727 733 757 773 2237 2273
100th SPDS prime: 33223
1000th SPDS prime: 3273527
</pre>
</pre>