Truncatable primes: Difference between revisions
Content deleted Content added
→{{header|REXX}}: added comments & whitespace, support for specifying the upper limit, optimized prime number generator. -- ~~~~ |
|||
Line 1,582:
=={{header|REXX}}==
<lang REXX>/*REXX pgm finds largest left- and right-truncatable primes < 1 million.*/
parse arg high .; if high=='' then high=1000000 /*assume 1 million.*/
!.=0; Lp=0;
p.1=2; p.2=3; p.3=5; p.4=7; p.5=11; p.6=13; p.7=17 /*some low primes.*/
!.2=1; !.3=1; !.
n=7;
/*───────────────────────────────────────generate primes ≤ high. */
do j=p.n+2 by 2 to 1000000 /*find all primes < 1,000,000. */▼
call time 'Reset'
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? */
if j//13 ==0 then iterate /*divisible by thirteen?
do k=7 while s.k<=j /*divide by known odd primes. */
if j//p.k==0 then iterate j /*Is divisible by X? Not prime.*/
end /*k*/
n=n+1 /*bump number of primes found. */
p.n=j;
!.j=1 /*indicate that J is a prime.*/
end /*j*/
say 'generation of primes took' format(time('E'),,2) "seconds."
/*───────────────────────────────────────find largest left truncatable P*/
say 'The last prime is' p.n " (there are "n 'primes under one million).'▼
say copies('─',70) /*show a separator line. */▼
▲ do L=n by -1 until lp\==0; if pos(0,p.L)\==0 then iterate
do k=1 for length(p.L)-1; _=right(p.L,k) /*truncate a #.*/
if \!._ then iterate L /*Truncated # ¬prime? Skip it.*/
Line 1,612 ⟶ 1,613:
lp=p.L
end /*L*/
/*───────────────────────────────────────find largest right truncatable P*/
do R=n by -1
do k=1 for length(p.R)-1; _=left(p.R,k) /*truncate a #.*/
if \!._ then iterate R /*Truncated # ¬prime? Skip it.*/
Line 1,619 ⟶ 1,620:
rp=p.R
end /*R*/
/*───────────────────────────────────────show largest left/right trunc P*/
say 'The largest left-truncatable prime under one million is ' lp▼
▲say copies('─',70) /*show a separator line. */
say 'The largest right-truncatable prime under one million is ' rp▼
/*stick a fork in it, we're done.*/</lang>
'''output'''
|