回 帖 发 新 帖 刷新版面

主题:[讨论]解“歌德巴赫猜想”

验证哥德巴赫猜想:任一个充分大的偶数n(10000>=n>=4),可以用两个素数之和表示。
谢谢!

回复列表 (共8个回复)

沙发

for n:=4 to 10000 do
   if not odd(n) then
      for j:=2 to n-2 do
         if (prime(j)) and (prime(n-j)) then
             writeln(n,'Right');
大概框架如此,prime函数你肯定写得来吧。

板凳

这个不是很简单么!循环+判断质数的函数!

3 楼

题目都错了,应该是任何大于5的奇数都是三个素数之和,任何一个大于2的偶数都是两个素数之和。

4 楼

[quote]题目都错了,应该是任何大于5的奇数都是三个素数之和,任何一个大于2的偶数都是两个素数之和。
[/quote]
是大于4的偶数

5 楼

program godbah(input,output);
var 
 n,p,q,j,i:integer;
 fp,fq:boolean;
begin
 for i:=4 to 10000 do
 begin
 p:=1;
  repeat 
   p:=p+1;
   q:=i-p;
   fp:=true;
   for j:= 2 to round(sqrt(p)) do 
     if p mod j=0
      then fp:=false;
   fq:=true;
    for j:= 2 to round(sqrt(q)) do 
     if q mod j=0
      then fq:=false;
  until fp and fq;
  writeln(i,'=',p,'+',q);
end;
end.
应该是这样写的

6 楼

不是吧?
应该是大于等于6的偶数可以拆分成2个质数和的形式
比如
6=3+3
等等
具体程序我就不写了
算法是枚举+素数判断
很简单同时也很老也很经典的题目了

7 楼

在奥赛书上有```
不过``好像是有限的哦```
变量定义要怎么定呢`?

8 楼

var
a:array[1..255]of longint;
m,n,i,j,k,l,t,x:longint;s:real;
p:boolean;
procedure f;
begin
 p:=true;
 for j:=2 to trunc(sqrt(i))+1 do
  if i mod j=0 then p:=false;
  if p then
  begin
  for j:=2 to trunc(sqrt(n-i))+1 do
  if (n-i) mod j=0 then p:=false;
  if p then
  writeln(i,'+',n-i);
  end;
end;
begin
readln(n);
if n<4 then exit;
if n=4 then
begin
writeln(2+2);
exit;
end;
for i:=2 to n-2 do
f;
end.

我来回复

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