Một số nguyên dương được gọi là số đẹp nếu tổng bình phương của các chữ số của nó là một số nguyên tố. Yêu cầu: Nhập vào một mảng A[1..n], mỗi số trên một dòng. Xuất ra màn hình số đẹp thứ A[i] --- BEAUTY.INP 1 6 --- BEAUTY.OUT 11 23
2 câu trả lời
Const Fi='BEAUTY.INP';
Fo='BEAUTY.OUT';
Var f,g: text;
i,n,d,s: longint;
A: array[1..1000] of longint;
Function ngto(a: longint): boolean;
Var i: longint;
Begin
If a<2 then exit(false);
For i:=2 to a div 2 do
If a mod i = 0 then exit(false);
exit(true);
End;
Function bpcs(b: longint): longint;
Var s: longint;
Begin
s:=0;
While b<>0 do
Begin
s:=s+sqr(b mod 10);
b:=b div 10;
End;
bpcs:=s;
End;
Begin
Assign(f,Fi); Reset(f);
Assign(g,Fo); Rewrite(g);
n:=0;
While not eof(f) do
Begin
inc(n);
Readln(f,A[n]);
End;
For i:=1 to n do
Begin
d:=0; s:=10;
While d<A[i] do
Begin
If ngto(bpcs(s)) then inc(d);
inc(s);
End;
Writeln(g,s-1);
End;
Close(f);
Close(g);
End.
const fi='sodep.inp';
fo='sodep.out';
var a: array [0..100000] of longint;
i,dem:longint;
function checkprime(x:longint):boolean;
var dem:byte;
c:longint;
begin
if x<=1 then exit(false);
for c:=2 to trunc(sqrt(x)) do if x mod c = 0 then exit(false);
exit(true);
end;
function check(x:longint):boolean;
begin
if checkprime((x mod 10)*(x mod 10)+(x div 10)*(x div 10)) then exit(true);
exit(false);
end;
begin
assign(input,fi);
reset(input);
while not eof() do
begin
readln(a[dem]);
inc(dem);
end;
close(input);
assign(output,fo);
rewrite(output);
for i:=0 to dem do
if check(a[i]) then writeln(a[i]);
close(output);
end.