Thứ Ba, 3 tháng 5, 2022

PRIME Pascal

const maxx=1000000;
var p:array[0..1000000] of longint;
    a:array[1..1500,1..1500] of longint;
    d,k,i,x,y,n,m:longint;
    s:int64;
procedure sang;
var i,j:longint;
begin
    for i:=1 to maxx do p[i]:=0;
    p[1]:=1;
    p[0]:=1;
    for i:=2 to trunc(sqrt(maxx)) do
    begin
        if p[i]=0 then
        begin
            j:=i*i;
            while j<=maxx do
            begin
                p[j]:=1;
                j:=j+i;
            end;
        end;
    end;
end;
procedure nhap;
var i,j:longint;
begin
    readln(n,m);
    for i:=1 to n do
    begin
        for j:=1 to m do
            read(a[i,j]);
        readln();
    end;
end;

procedure xet(x,y:longint);
var i:longint;
begin

        if a[x,y]=0 then exit;
        if p[a[x,y]]=0 then
        begin
            //writeln(a[x,y]);
                inc(d);
                s:=s+a[x,y];
        end;
        k:=a[x,y];
        for i:=1 to 5 do
        begin
                if y+i>m then break;
                k:=k*10+a[x,y+i];
                if p[k]=0 then
                begin
                //writeln(k);
                        inc(d);
                        s:=s+k;
                end;
        end;
        k:=a[x,y];
        for i:=1 to 5 do
        begin
                if (y+i>m) or (x+i>n) then break;
                k:=k*10+a[x+i,y+i];
                if p[k]=0 then
                begin
                        //writeln(k);
                        inc(d);
                        s:=s+k;
                end;
        end;
        k:=a[x,y];
        for i:=1 to 5 do
        begin
                if x+i>n then break;
                k:=k*10+a[x+i,y];
                if p[k]=0 then
                begin
                        //writeln(k);
                        inc(d);
                        s:=s+k;
                end;
        end;
end;
procedure giai;
var i,j:longint;
begin
    sang;
    for i:=1 to n do
    begin
        for j:=1 to m do
            xet(i,j);
    end;
    write(d,' ',s);
end;

begin
    assign(input,'prime.inp');reset(input);
    assign(output,'prime.out');rewrite(output);
    nhap;
    giai;
    close(input);
    close(output);
end.

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.