28 lines
645 B
Text
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;
|