Anonymous user
Truncatable primes: Difference between revisions
m
→{{header|REXX}}: changed some comments, optimized the prime generation part of the program.
m (→{{header|REXX}}: changed output to conform to program's output.) |
m (→{{header|REXX}}: changed some comments, optimized the prime generation part of the program.) |
||
Line 1,640:
=={{header|REXX}}==
Extra code was added to the prime number generator as this is the section of the REXX program that consumes the vast majority of the time.
<lang REXX>/*REXX pgm finds largest left-
parse arg high .; if high=='' then high=1000000
!.=0; Lp=0; Rp=0; w=length(high) /*placeholders for primes, Lp, Rp*/
!.2=1; !.3=1; !.5=1; !.7=1; !.11=1; !.13=1; !.17=1
/*───────────────────────────────────────generate more primes ≤ high. */
do j=
if j//3 ==0 then iterate /*is J divisible by three? */
if right(j,1)==5 then iterate /*is the right-most digit a "5" ?*/
Line 1,655:
/*[↑] above five lines saves time*/
do k=7 while s.k<=j /*divide by known odd primes. */
if j//
end /*k*/
!.j=1 /*indicate that J is a prime.*/
end /*j*/
/*─────────────────────────────────────find largest left truncatable P. */
do L=
do k=1 for length(
if \!._ then iterate L /*Truncated # ¬prime? Skip it.*/
end /*k*/
Line 1,669:
end /*L*/
/*─────────────────────────────────────find largest right truncatable P.*/
do R=
do k=1 for length(
if \!._ then iterate R /*Truncated # ¬prime? Skip it.*/
end /*k*/
Line 1,676:
end /*R*/
/*───────────────────────────────────────show largest left/right trunc P*/
say 'The last prime found is '
say copies('─',70) /*show a separator line. */
say 'The largest left-truncatable prime ≤' high " is " right(
say 'The largest right-truncatable prime ≤' high " is " right(
/*stick a fork in it, we're done.*/</lang>
'''output'''
|