mọi số tự nhiên đều có thể viết dưới dạng tổng của hai số nguyên tố. Viết chương trình thực hiện tách một số tự nhiên thành tổng của hai số nguyên tố
Nhận xét:Hãy mở rộng bài toán theo hướng
– Xét xem trong đoạn n1…n2 số nào cho phép tách thành tổng 2 số nguyên tố nhiều trường hợp nhất
– Tách một số thành tổng ba số nguyên tố
uses crt;
var n,i,j,a,b: ineteger;
function nt(n: integer): boolean;
var d: byte;
i: integer;
begin
d:=0;
for i:=1 to n do
if n mod i=0 then d:=d+1;
if d=2 then nt:=true else nt:=false;
end;
begin
clrscr;
write (‘nhap n: ‘); readln (N);
for i:=1 to n-2 do
if nt(i) then
begin
a:=i;
for j:=1 to n do
if nt(j) then
if a+j=n then b:=j;
end;
writeln (n,’ = ‘,a,’+’,b);
readln;
end.
uses crt;
var a,b,c,n:longint;
function nt(x:longint):boolean;
var i:longint;
begin
if x<2 then exit(false);
for i:=2 to trunc(sqrt(x)) do
if x mod i = 0 then exit(false);
exit(true);
end;
procedure tach(t:longint);
begin
b:=2;
c:=t-b;
while (nt(b)=false) or (nt(c)=false) do
begin
inc(b);dec(c);
end;
end;
begin
clrscr;
readln(n);
if (n mod 2=1) and (n>=4) then
begin
a:=2;
b:=n-a;
if nt(b)=true then
writeln(a,’+’,b)
else writeln(‘Khong the tach thanh tong cua 2 so nguyen to’);
end
else
begin
tach(n);
writeln(b,’+’,c);
end;
if n>=6 then
if (n mod 2=0) then
begin
a:=2;
tach(n-a);
writeln(a,’+’,b,’+’,c);
end
else
begin
a:=3;
tach(n-a);
while (nt(a)=false) or (nt(b)=false) or (nt(c)=false) do
begin
inc(a);
tach(n-a);
end;
writeln(a,’+’,b,’+’,c);
end
else writeln(‘Khong the tach thanh tong cua 3 so nguyen to’);
readln;
end.