Ai sửa hộ mình với var A:ARRAY[1..1000000] of boolean; i,n,t:longint; function snt(x:longint):boolean; var j:longint; begin snt:=true; if x < 2 then snt:=false; if x = 2 then snt:=true; if x > 2 then for j:=2 to trunc(sqrt(x)) do if x mod j=0 then snt:=false; end; function sdx(y:longint):boolean; var s,tg:ansistring; i1:longint; begin str(y,s); tg:=''; for i1:=1 to length(s) do tg:=S[i1]+tg; if (s=tg) then sdx:=true else sdx:=false; end; begin read(n); for i:=1 to n do read(A[i]); t:=0; for i:=1 to n do if sdx(snt(A[i])) then t:=t+1; write(t); end.

1 câu trả lời

Có vẻ bạn đang làm bài số nguyên tố đối xứng nhỉ?

 

var A:ARRAY[1..1000000] of longint;
    i, n, t: longint;

function snt(x: longint): boolean;
var j:longint;
begin
    snt:=true;
    if x < 2 then snt:=false;
    if x = 2 then snt:=true;
    if x > 2 then
        begin
            for j:=2 to trunc(sqrt(x)) do
                if x mod j = 0 then
                    snt:=false;
        end;
end;

function sdx(y: longint): boolean;
var s, tg: string;
    i: longint;
begin
    str(y, s);
    for i:=1 to length(s) div 2 do
        if s[i] <> s[length(s) - i + 1] then exit(false);
    exit(true);
end;

begin
    readln(n);
    for i:=1 to n do read(A[i]);

    t:=0;
    for i:=1 to n do
        if sdx(a[i]) then
            begin
                if snt(a[i]) then
                    t:=t + 1;
            end;
    write(t);
end.

Câu hỏi trong lớp Xem thêm