Smarandache prime-digital sequence: Difference between revisions
Smarandache prime-digital sequence (view source)
Revision as of 15:39, 25 February 2024
, 3 months agoAdded Easylang
No edit summary |
(Added Easylang) |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 624:
</pre>
=={{header|EasyLang}}==
<syntaxhighlight>
fastfunc isprim num .
i = 2
while i <= sqrt num
if num mod i = 0
return 0
.
i += 1
.
return 1
.
n = 2
repeat
if isprim n = 1
h = n
while h > 0
d = h mod 10
if d < 2 or d = 4 or d = 6 or d > 7
break 1
.
h = h div 10
.
if h = 0
cnt += 1
if cnt <= 25
write n & " "
.
.
.
until cnt = 100
n += 1
.
print ""
print n
</syntaxhighlight>
{{out}}
<pre>
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
33223
</pre>
=={{header|F_Sharp|F#}}==
Line 928 ⟶ 971:
=={{header|Fōrmulæ}}==
{{FormulaeEntry|page=https://formulae.org/?script=examples/Smarandache_prime-digital_sequence}}
'''Solution'''
[[File:Fōrmulæ - Smarandache prime-digital sequence 01.png]]
'''Case 1. Show the first 25 SPDS primes'''
[[File:Fōrmulæ - Smarandache prime-digital sequence 02.png]]
[[File:Fōrmulæ - Smarandache prime-digital sequence 03.png]]
'''Case 2. Show the hundredth SPDS prime'''
[[File:Fōrmulæ - Smarandache prime-digital sequence 04.png]]
[[File:Fōrmulæ - Smarandache prime-digital sequence 05.png]]
'''Additional cases. Show the 1000-th, 10,000-th and 100,000th SPDS primes'''
[[File:Fōrmulæ - Smarandache prime-digital sequence 06.png]]
[[File:Fōrmulæ - Smarandache prime-digital sequence 07.png]]
[[File:Fōrmulæ - Smarandache prime-digital sequence 08.png]]
[[File:Fōrmulæ - Smarandache prime-digital sequence 09.png]]
[[File:Fōrmulæ - Smarandache prime-digital sequence 10.png]]
[[File:Fōrmulæ - Smarandache prime-digital sequence 11.png]]
=={{header|Go}}==
Line 1,977 ⟶ 2,046:
</pre>
=={{header|RPL}}==
Brute force being not an option for the slow machines that can run RPL, optimisation is based on a prime-digital number generator returning possibly prime numbers, e.g. not ending by 2 or 5.
<code>PRIM?</code> is defined at [[Primality by trial division#RPL|Primality by trial division]].
{| class="wikitable"
! RPL code
! Comment
|-
|
≪ { "2" "3" "5" "7" } DUP SIZE → digits base
≪ DUP SIZE 1 CF 2 SF
'''DO'''
'''IF''' DUP NOT '''THEN''' digits 1 GET ROT + SWAP 1 CF
'''ELSE'''
DUP2 DUP SUB digits SWAP POS
'''IF''' 2 FS?C '''THEN''' 2 == 4 ≪ 1 SF 2 ≫ IFTE
'''ELSE IF''' DUP base == '''THEN'''
SIGN 1 SF '''ELSE''' 1 + 1 CF '''END'''
'''END'''
digits SWAP GET REPL
LASTARG ROT DROP2 1 - '''END'''
'''UNTIL''' 1 FC? '''END''' DROP
≫ ≫ ‘<span style="color:blue">'''NSPDP'''</span>’ STO
|
<span style="color:blue">'''NSPDP'''</span> ''( "PDnumber" → "nextPDnumber" )''
rank = units position, carry = 0, 1st pass = true
Loop
If rank = 0 then add a new digit rank
Else
digit = ord[rank]
If first pass then next digit = 3 or 7
Else if digit is the last of the series
Then next digit = 1 otherwise = ++digit
Replace digit with next_digit
Rank--
Until no carry
return number as a string
|}
≪ { 2 3 5 } 7
'''WHILE''' OVER SIZE 100 < '''REPEAT'''
'''IF''' DUP <span style="color:blue">'''PRIM?'''</span> '''THEN''' SWAP OVER + SWAP '''END'''
STR→ <span style="color:blue">'''NSPDP'''</span> STR→ '''END''' DROP ≫ EVAL
DUP 1 25 SUB
SWAP 100 GET
{{out}}
<pre>
2: { 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 }
1: 33223
</pre>
task needs 3 min 45 s to run on a HP-48G.
=={{header|Rust}}==
<syntaxhighlight lang="rust">fn is_prime(n: u32) -> bool {
Line 2,185 ⟶ 2,304:
{{libheader|Wren-math}}
Simple brute-force approach.
<syntaxhighlight lang="
var limit = 1000
|