回 帖 发 新 帖 刷新版面

主题:哥德巴赫猜想 问题

输入一个大于4,而且是偶数的书。
证明,如果这个数是2个素数的和。那么就打印出来。else 输出 NO!!
要用自定义函数!!!!
答对+30 分

回复列表 (共15个回复)

11 楼

var a,b,c,d,f,n:longint;
begin
  readln(n);
   if (n mod 2<>0) then
    begin
     writeln('WRONG!!');
     halt;
    end;
   for a:=2 to n div 2 do
    begin
     f:=0;
     for b:=2 to trunc(sqrt(a)) do
      if (a mod b=0) then
       begin
        f:=1;break;
       end;
     if f=0 then
      begin
       c:=n-a;
       for b:=2 to trunc(sqrt(c)) do
        if (c mod b=0) then
         begin
          f:=1;break;
         end;
      if f=0 then
       begin
        writeln(n,'=',a,'+',c);
        halt;
       end;
      end;
    end;
   writeln('No!!');
end.

12 楼

本人原创,语法错误请别找我……


program gdbh;
var
  i,j,num:integer;
function prime(number:integer):boolean;
  var
    i:integer;
    tmp:boolean;
  begin
    tmp:=true;
    for i:=1 to trunc(sqrt(number)) do
      if number mod i:=0 then begin
        tmp:=false;
        break;
        end;
    prime:=tmp;
    end;
begin
  write('N=');
  readln(num);
  if (num mod 2 <>0) or (num<=4) then begin
    write('Wrong number!');
    halt;
    end;
  for i:=2 to num div 4-1 do begin
    j:=2*i-1;
    if prime(j)and prime(num-j) then begin
      writeln(j:5,num-j:5);
      break;
      end;
    end;
end.

13 楼

==

14 楼

刚学pascal时写的,可能有些忘记了~~~~~~~~~

program Godbaha;
label 100;
var
  n,p,q:integer;
function prime(x:integer):boolean;   {判断是否为素数}
  var
    i:integer;
    flag:boolean;
  begin
    flag:=true;
    if x=1 then flag:=false
    else
      for i:=2 to round(sqrt(x)) do
        if x mod i=0 then flag:=false;
    prime:=flag;
  end;
begin
  repeat
   readln(n);
  until (not odd(n))and(n>2);      {保证输入的是偶数,且大于2}  
  p:=2;      
  repeat                 {找数的主循环}
    if p>n then             {当p>n时,输出no!}
    begin  
      writeln('no!');
      goto 100;              {跳出循环,有些忘记了,好像是这样的}
    end;
    repeat
      if p<3 then p:=p+1 else p:=p+2;
    until prime(p);                   {找质数p}
    q:=n-p;
  until prime(q);               {找质数q}
  writeln(n,'=',p,'+',q);
100:readln
end.

15 楼

还有别的算法么?

我来回复

您尚未登录,请登录后再回复。点此登录或注册