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.