重生之一世闲人书包网:编程问题

来源:百度文库 编辑:中科新闻网 时间:2024/05/11 01:42:16
我正在做歌德巴赫猜想,编的程序有点问题,谁能帮我看看?
#include<stdio.h>
#include<math.h>

main()
{int a,b,n,i,j;
for(n=4;n<=100;n++)
{for(a=b=2;n-a>2;a++)
{for(j=2;j<=sqrt(a);j++) if(a%j==0) break;
for(b=n-a,i=2;i<=sqrt(b)&&b>=2;i++)
if(b%i==0||i<=sqrt(b)) break;
if(i>sqrt(b)) {printf("%d=%d+%d\t",n,a,b);break;}}}
getchar();
}

附上QB程序:
DO
INPUT N
LOOP UNTIL N>=4 AND N MOD 2=0
P=2
1 Q=N-P
F1=1:F2=1
FOR I=2 TO SQR(P)
IF p MOD i = 0 THEN flag1 = 0: GOTO 10
NEXT i
10 IF flag1 = 1 THEN
FOR j = 2 TO SQR(q)
IF q MOD j = 0 THEN flag2 = 0: GOTO 20
NEXT j
END IF
20 IF flag1 = 1 AND flag2 = 1 THEN
PRINT "YES"; n; "="; p; "+"; q:END
ELSE
p = p + 1: GOTO 1
END IF
END IF
END

这是数学家王元在大家里的 叙述
http://www.cctv.com/program/dajia/20060810/104010.shtml
给你这个的目的 如同王元所说 做这个是浪费时间 不客气的说 什么是歌德巴赫猜想你可能都不知道。。

把题目说的清楚一点儿, 比如你要求什么, 用哪个变量表示, 所求的范围等等...

#include<stdio.h>
#include<math.h>

main() //主函数的的类型不为void要return一个值
{
int a,b,n,i,j;
for(n=4;n<=100;n++)
{
for(a=b=2;n-a>2;a++)
{
for(j=2;j<=sqrt(a);j++)
if(a%j==0) break;
for(b=n-a,i=2;i<=sqrt(b)&&b>=2;i++)
if(b%i==0||i<=sqrt(b)) break;
if(i>sqrt(b))
{
printf("%d=%d+%d\t",n,a,b);break;
}
}
}
getchar();

/*缺少了return 0;*/
}