RosettaCodeData/Task/Pernicious-numbers/PL-I/pernicious-numbers.pli
2015-11-18 06:14:39 +00:00

28 lines
645 B
Text

pern: procedure options (main);
declare (i, n) fixed binary (31);
n = 3;
do i = 1 to 25, 888888877 to 888888888;
if i = 888888877 then do; n = i ; put skip; end;
do while ( ^is_prime ( tally(bit(n), '1'b) ) );
n = n + 1;
end;
put edit( trim(n), ' ') (a);
n = n + 1;
end;
is_prime: procedure (n) returns (bit(1));
declare n fixed (15);
declare i fixed (10);
if n < 2 then return ('0'b);
if n = 2 then return ('1'b);
if mod(n, 2) = 0 then return ('0'b);
do i = 3 to sqrt(n) by 2;
if mod(n, i) = 0 then return ('0'b);
end;
return ('1'b);
end is_prime;
end pern;