Trong một bức thư mà Christian Goldbach gửi cho Euler, ông đã đề cập đến phỏng đoán của mình: Mọi số tự nhiên chẵn lớn hơn 2 đều là tổng của 2 số nguyên tố.
Hãy lập chương trình để kiểm chứng phỏng đoán của Goldbach.
Yêu cầu:
- Dữ liệu vào từ file GB.INP gồm nhiều dòng, dòng đầu là số test (<10), các dòng tiếp theo mỗi dòng ghi 1 số tự nhiên chẵn lớn hơn 2 (<32000)
- Dữ liệu ra là file GB.OUT gồm các dòng (mỗi dòng ứng với 1 test) - mỗi dòng gồm 2 số nguyên tố cách nhau ít nhất 1 dấu cách có tổng bằng số đã cho (hoặc không tìm được – ghi là “khong”).
Ví dụ:
Input Output
3
8 3 5
12 5 7
5 2 3
Lời giải tham khảo
uses crt;
var f:text;
h,i,j,l,k,n,q,t:longint;
a:array[1..100] of longint;
begin
clrscr;
assign(f,'GB.INP');
RESET(f);
readln(f,h);
for i:=1 to h do readln(f,a[i]);
close(f);
assign(f,'GB.OUT');
REWRITE(f);
for i:=1 to h do
begin
for j:=2 to a[i]-2 do
begin
l:=0;
for k:=1 to j do
if j mod k=0 then l:=l+1;
if l=2 then
begin
t:=a[i]-j;
q:=0;
for n:=1 to t do
if t mod n=0 then q:=q+1;
if (q=2) AND (j<=t) then
begin
writeln(f,j,' ',t);
break;
end;
end;
end;
end;
close(f);
end.
No comments:
Post a Comment
Cảm ơn bạn đã nhận xét