Truncatable primes: Difference between revisions

(added OpenEdge solution)
Line 936:
Output:
<pre>-> (998443 . 739399)</pre>
 
=={{header|PL/I}}==
<lang PL/I>
tp: procedure options (main);
declare primes(1000000) bit (1);
declare max_primes fixed binary (31);
declare (i, k) fixed binary (31);
 
max_primes = hbound(primes, 1);
call sieve;
 
/* Now search for primes that are right-truncatable. */
call right_truncatable;
 
/* Now search for primes that are left-truncatable. */
call left_truncatable;
 
right_truncatable: procedure;
declare direction bit (1);
declare (i, k) fixed binary (31);
 
test_truncatable:
do i = max_primes to 2 by -1;
if primes(i) then /* it's a prime */
do;
k = i/10;
do while (k > 0);
if ^primes(k) then iterate test_truncatable;
k = k/10;
end;
put skip list (i || ' is right-truncatable');
return;
end;
end;
end right_truncatable;
 
left_truncatable: procedure;
declare direction bit (1);
declare (i, k, d, e) fixed binary (31);
 
test_truncatable:
do i = max_primes to 2 by -1;
if primes(i) then /* it's a prime */
do;
k = i;
do d = 100000 repeat d/10 until (d = 10);
e = k/d;
k = k - e*d;
if e = 0 then iterate test_truncatable;
if ^primes(k) then iterate test_truncatable;
end;
put skip list (i || ' is left-truncatable');
return;
end;
end;
end left_truncatable;
 
sieve: procedure;
declare (i, j) fixed binary (31);
 
primes = '1'b;
 
do i = 2 to sqrt(max_primes);
do j = i+i to max_primes by i;
primes(j) = '0'b;
end;
end;
end sieve;
 
end tp;
</lang>
<pre>
739399 is right-truncatable
999431 is left-truncatable</pre>
 
=={{header|PowerShell}}==
Anonymous user