Pascal

Modified: Wednesday, 22-12-2021 07:00 AM

Số đẹp

Một số nguyên dương được gọi là đẹp nếu tổng bình phương các chữ số của nó (trong dạng biểu diễn thập phân) là một số nguyên tố.
Ví dụ: 12 là một số đẹp vì 1^2 + 2^2 = 5 là số nguyên tố.
Các số đẹp được đánh số theo thứ tự tăng dần của giá trị, bắt đầu từ 1.
Yêu cầu: cho số nguyên N (1<=N<=10^6). Hãy tìm số đẹp thứ N
Dữ liệu vào từ tệp văn bản SODEP.INP gồm nhiều dòng, mỗi dòng là một bộ kiểm thử chứa một số nguyên N.
Kết quả ghi ra tệp văn bản SODEP.OUT kết quả của mỗi bộ kiểm thử, mỗi bộ được ghi trên một dòng.
Ví dụ:
SODEP.INP
1
6
SODEP.OUT
11
23


var A,N:array[1..1000000] of longint;
    f1,f2:text;
    d:longint;

procedure khaibaotep;
begin
    assign(f1,'beauty.inp');reset(f1);
    assign(f2,'beauty.out');rewrite(f2);
    d:=0;
    while not eof(f1) do
    begin
        inc(d);
        readln(f1,N[d]);
    end;
end;

function ngto(a:longint):boolean;
var  i:longint;
begin
    if a<2 then exit(false)
    else for i:=2 to trunc(sqrt(a)) do
        if a mod i=0 then exit(false);
        exit(true);
end;

function tongbp(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;
    exit(s);
end;

procedure xuly;
var i,j,max:longint;
begin
    i := 0;
    j := 10;
    while i<1000000 do 
    begin
        inc(j);
        if(ngto(tongbp(j))) then 
        begin
            inc(i);
            a[i]:=j;
        end;
    end;
    for i:=1 to d do
        writeln(f2,a[n[i]]);
        //writeln(a[n[i]]);
    close(f1);close(f2);
    //readln;
end;
begin
    khaibaotep;
    xuly;
end.