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.