用pascal语言验证哥德巴赫猜想

2025-12-24 20:30:52
推荐回答(3个)
回答1:

var
b:integer;
n,i,j,k,m,p:longint;
begin
for i:=4 to 500 do
begin
if i mod 2=0 then
begin
for j:=2 to i do
begin
b:=1;
for k:=2 to trunc(sqrt(j)) do
if j mod k=0 then
b:=0;
if b=1 then
begin
m:=i-j;
p:=j;
for k:=2 to trunc(sqrt(m)) do
if m mod k=0 then
b:=0;
end;
if b=1 then break;
end;
writeln(i,'=',p,'+',m);
end;
end;
end.

做了下修改,不过时间可能要长几毫秒

回答2:

穷举+if then即可
var
b:integer;
n,i,j,k,m,p:longint;
begin
for i:=4 to 500 do
begin
if i mod 2=0 then
begin
for j:=2 to i do
begin
b:=1;
for k:=2 to trunc(sqrt(j)) do
if j mod k=0 then
b:=0;
if b=1 then
begin
m:=i-j;
p:=j;
for k:=2 to trunc(sqrt(m)) do
if m mod k=0 then
b:=0;
end;
if b=1 then break;
end;
writeln(i,'=',p,'+',m);
end;
end;
end.

回答3:

var
b:boolean;
n,i,j,k,m,p:longint;
begin
for i:=4 to 500 do
begin
if i mod 2=0 then
begin
for j:=2 to i do
begin
b:=true;
for k:=2 to trunc(sqrt(j)) do
if j mod k=0 then
begin
b:=false;
break;
end;
if b then
begin
m:=i-j;
p:=j;
for k:=2 to trunc(sqrt(m)) do
if m mod k=0 then
begin
b:=false;
break;
end;
end;
if b then break;
end;
writeln(i,'=',p,'+',m);
end;
end;
end.
有点长..呵呵