Truncatable primes: Difference between revisions
Content added Content deleted
m (→{{header|Perl 6}}: Improved alignment) |
No edit summary |
||
Line 439: | Line 439: | ||
'''Sample Output''' |
'''Sample Output''' |
||
<pre>(998443, 739399)</pre> |
<pre>(998443, 739399)</pre> |
||
=={{header|REXX}}== |
|||
<lang REXX> |
|||
/*find largest left- & right-truncatable primes < 1 million.*/ |
|||
x.=0 /*placeholders for primes. */ |
|||
p.=999 /*default value for P.n */ |
|||
p.1= 2; x.2=1 /*1st prime: two. */ |
|||
p.2= 3; x.3=1 /*2nd prime: three. */ |
|||
p.3= 5; x.5=1 /*3rd prime: five. */ |
|||
p.4= 7; x.7=1 /*4th prime: seven. */ |
|||
p.5=11; x.11=1 /*5th prime: eleven. */ |
|||
n=5 /*number of primes so far. */ |
|||
do j=p.n+2 by 2 to 1000000 /*find all primes <1000000. */ |
|||
if j//3 ==0 then iterate /*divisible by three? */ |
|||
if right(j,1)==5 then iterate /*right-most digit a five? */ |
|||
if j//7 ==0 then iterate /*divisible by seven? */ |
|||
if j//11 ==0 then iterate /*divisible by eleven? */ |
|||
/*the above 4 lines saves time*/ |
|||
do k=6 /*divide by known odd primes. */ |
|||
if p.k**2>j then leave /*only go up to sqrt(J). */ |
|||
if j//p.k==0 then iterate j /*divisible by X? Not prime. */ |
|||
end |
|||
n=n+1 /*bump number of primes found.*/ |
|||
p.n=j /*assign to sparse array. */ |
|||
x.j=1 /*indicate that J is a prime. */ |
|||
end |
|||
say 'The last prime is' p.n "("n 'primes under one million).' |
|||
say copies('-',66) /*show a separator. */ |
|||
lp=0 |
|||
do j=1 for n /*find left-trunc. primes. */ |
|||
y=p.j; g=y |
|||
if pos(0,y)\==0 then iterate /*if prime contains a 0, nope.*/ |
|||
do k=1 for length(y)-1 /*test for prime, skip whole #*/ |
|||
g=right(y,k); if \x.g then iterate j |
|||
end |
|||
lp=max(lp,y) /*choose the maximum so far. */ |
|||
end |
|||
rp=0 |
|||
do j=1 for n /*find left-trunc. primes. */ |
|||
y=p.j; g=y |
|||
if pos(0,y)\==0 then iterate /*if prime contains a 0, nope.*/ |
|||
do k=1 for length(y)-1 /*test for prime, skip whole #*/ |
|||
g=left(y,k); if \x.g then iterate j |
|||
end |
|||
rp=max(rp,y) /*choose the maximum so far. */ |
|||
end |
|||
say 'The largest left-truncatable prime is' lp '(under one million).' |
|||
say 'The largest right-truncatable prime is' rp '(under one million).' |
|||
</lang> |
|||
Output: |
|||
<pre style="height:30ex;overflow:scroll"> |
|||
The last prime is 999983 (78498 primes under one million). |
|||
------------------------------------------------------------------ |
|||
The largest left-truncatable prime is 998443 (under one million). |
|||
The largest right-truncatable prime is 739399 (under one million). |
|||
</pre> |
|||
=={{header|Tcl}}== |
=={{header|Tcl}}== |
||
<lang tcl>package require Tcl 8.5 |
<lang tcl>package require Tcl 8.5 |