Với N là một số nguyên dương cho trước (N<1000).Hãy tìm tất cả các bộ số nguyên tố x, y, z(x ≤ y ≤ z)là nghiệm của phương trình sau x + y + z = N.
+ Dữ liệu vào: từ file NGHIEMNT.INP gồm một số N duy nhất.
+ Dữ liệu ra: ghi ra file NGHIEMNT.OUT chứa K+1 dòng (K là số nghiệm tìm được), trong đó: - Dòng thứ i trong K dòng đầu tiên chứa 3 số nguyên tố cho biết bộ nghiệm thứ i. - Dòng thứ K+1 chứ 3 số 0 cho biết điểm kết thúc của file kết qủa (Các số trên cùng một dòng cách nhau một khoảng trống)
var n,x,y,z:integer;
begin
assign(input,'nghiemnt.inp');reset(input);
assign(output,'nghiemnt.out');rewrite(output);
readln(n);
for x:=0 to n do
for y:=0 to n-x do
begin
z:=n-x-y;
writeln(x,' ',y,' ',z);
end;
writeln('0 0 0');
end.
var n,i,j,h:longint;kt:boolean;
function nt(n:int64):boolean;
var k:longint;
begin
if n<2 then exit(false) else if n<4 then exit(true);
if (n mod 2=0) or (n mod 3=0) then exit(false);
for k:=1 to (trunc(sqrt(n))+1) div 6 do
if (n mod (6*k+1)=0) or (n mod (6*k-1)=0) then exit(false);
exit(true);
end;
begin
assign(input,'nghiemnt.inp');reset(input);
assign(output,'nghiemnt.out');rewrite(output);
readln(n);kt:=false;
for i:=2 to n do
begin
if nt(i) then
for j:=n-i downto 2 do
begin
h:=n-i-j;
if nt(j)and nt(h) then begin writeln(i,' ',j,' ',h);kt:=true; end;
end;
end;
if kt=false then write('khong co bo so nao');
end.