Pascal
Modified: Wednesday, 22-12-2021 07:00 AM
Siêu nguyên tố là số nguyên tố mà khi bỏ đi các ký số bên phải của nó thì cũng là 1 số nguyên tố
program ideone;
var a: array[0..1, 1..100000] of int64;
d: array[1..4] of integer;// = (1, 3, 7, 9);
sz: array[0..1] of longint;
i, j, k, m, n: longint;
function isPrime(n: int64): boolean;
var m: int64;
i: longint;
begin
m := trunc(sqrt(n));
for i := 2 to m do
if (n mod i = 0) then exit(false);
exit(true);
end;
begin
d[i]:=1; d[2]:=3; d[3]:=7; d[4]:=9;
a[1, 1] := 2; a[1, 2] := 3; a[1, 3] := 5; a[1, 4] := 7;
sz[1] := 4;
writeln('Nhap N: ');
readln(n);
for i := 2 to n do
begin
sz[i mod 2] := 0;
m := 1 - (i mod 2);
for j := 1 to sz[m] do
for k := 1 to 4 do
if (isPrime(a[m, j]*10 + d[k]) = true) then
begin
inc(sz[i mod 2]);
a[i mod 2, sz[i mod 2]] := a[m, j]*10 + d[k];
end;
end;
writeln('Co ', sz[n mod 2], ' so sieu nguyen to co ', n, ' chu so:');
for i := 1 to sz[n mod 2] do write(a[n mod 2, i], ' ');
readln;
end.