10.05.2017

Tổng hai số nguyên tố

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