Phân rã nguyên tố Khi nghiên cứu về số nguyên tố, người ta dự đoán rằng: Mỗi số nguyên dương không nhỏ hơn 2 có thể viết thành tổng của không quá 3 số nguyên tố (xuất phát từ giả thiết Golbach – Euler). Hãy viết chương trình PR_NGTO.PAS nhập vào một số tự nhiên N (2<=N<=10^6 ) và biểu diễn số N thành tổng của các số nguyên tố với số số hạng là ít nhất. Dữ liệu vào: Số N được nhập từ bàn phím. Dữ liệu ra: Xuất lên màn hình cách viết số N thành tổng các số nguyên tố. Ví dụ : VUONG.INP VUONG.OUT Nhap N =5 5=5 Nhap N =18 18=13+5 Nhap N=2018 2018=2011+7 Nhap N=11111 11111=11093+13+5 pascal nha giải thích ý tưởng luôn ạ
1 câu trả lời
uses crt;
var n,m:longint;
function KTNT(n:longint):boolean;
var i:longint;
begin
if n < 2 then exit(false);
if n < 4 then exit(true);
if n mod 2 = 0 then exit(false);
if n mod 3 = 0 then exit(false);
i:=5;
while i*i <= n do
begin
if n mod i = 0 then exit(false);
if n mod (i+2) = 0 then exit(false);
inc(i,6);
end;
exit(true);
end;
begin
clrscr;
readln(n);
write(n,'=');
m:=n;
while m <> 0 do
begin
if KTNT(n) = true then
begin
write(n);
readln;
exit;
end;
n:=n-2;
while KTNT(n) = false do dec(n);
write(n,'+');
m:=m-n;n:=m;
end;
readln;
end.