回 帖 发 新 帖 刷新版面

主题:哥德巴赫猜想!做出来的+50!

哥德巴赫猜想:任何大于2的偶数,都可以写成两个素数的和的形式,例如:18=5+13。满足条件的表达式不一定是唯一的,例如:10=3+7=5+5=7+3。其中我们将3+7与7+3两种写法认为是重复的,因此10有2种不重复的分解方法。请你编一个程序,对于键盘输入的一个大于2小于1000的偶数,输出所有满足要求的不重复的表达式。

回复列表 (共6个回复)

沙发

关于这个程序的核心部分我就告诉你,剩下的PD函数(也就是判断是否是素数的函数)你就自己打吧!
   s:=0;
  readln(n);
  for i:=2 to n div 2 do
   if (pd(i))and(pd(n-i))
     then begin
            writeln(i,' ',n-i);
            s:=s+1;
          end;

板凳

没人顶拉!不想要+分了!

3 楼

PROGRAM godbah (input, output);
{验证歌德巴赫猜想}
    VAR
        n, p, q, j: integer;
        flagp, flagq: boolean;
    BEGIN
    {输入大于3的偶数}
        read(n);
        p := 1;
        REPEAT
            p := p + 1;
            q := n -p;
            {p是素数吗?}
            flagp := true;
            FOR j:=2 TO round(sqrt(p)) DO
                IF p MOD j = 0
                    THEN flagp := false;
            {q是素数吗?}
            flagq := true;
                    FOR j:=2 TO round(sqrt(q)) DO
                        IF q MOD j = 0
                            THEN flagq := false
            IF flagp AND flagq AND (q >= p)
                THEN
                    {输出结果}
                    writeln(n, '=', p, '+', q)
        UNTIL p >= n;
        
        
    END.

4 楼

用惯了c,改写pascal还真不顺手.在我的机子上是通过了,你自己看看对不对

5 楼

var
n,p,q,j:integer;
fip,fiq:boolean;
begin
read(n);
p:=1;
repeat
  p:=p+1;
  q:=n-p;
  fip:=true;
  for j:=2to round(sqrt(p))do
    if p mod j=0
       then fip:=false;
  fiq :=true;
  for j:=2to round(sqrt(q))do
    if q mod j=0
       then fiq:=false
  until fip and fiq;
  write(n,'=',p,'+',q)
end.

6 楼

这个也太简单了![em9]
谁做出来也不需要加分啊!
......
同志还需努力![em2]

我来回复

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