主题:哥德巴赫猜想!做出来的+50!
梦幻神兵
[专家分:600] 发布于 2005-12-19 17:21:00
哥德巴赫猜想:任何大于2的偶数,都可以写成两个素数的和的形式,例如:18=5+13。满足条件的表达式不一定是唯一的,例如:10=3+7=5+5=7+3。其中我们将3+7与7+3两种写法认为是重复的,因此10有2种不重复的分解方法。请你编一个程序,对于键盘输入的一个大于2小于1000的偶数,输出所有满足要求的不重复的表达式。
回复列表 (共6个回复)
沙发
517081830 [专家分:10] 发布于 2005-12-21 17:00:00
关于这个程序的核心部分我就告诉你,剩下的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;
板凳
梦幻神兵 [专家分:600] 发布于 2005-12-26 16:48:00
没人顶拉!不想要+分了!
3 楼
goal00001111 [专家分:4030] 发布于 2005-12-29 16:37:00
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 楼
goal00001111 [专家分:4030] 发布于 2005-12-29 16:38:00
用惯了c,改写pascal还真不顺手.在我的机子上是通过了,你自己看看对不对
5 楼
ruibin [专家分:10] 发布于 2006-01-01 14:21:00
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 楼
zlwsdy [专家分:0] 发布于 2006-02-05 21:02:00
这个也太简单了![em9]
谁做出来也不需要加分啊!
......
同志还需努力![em2]
我来回复