您当前的位置:首页 > 计算机 > 编程开发 > C语言

哥德巴赫猜想问题

时间:01-03来源:作者:点击数:

德国数学家哥德巴赫(Goldbach)在1725年写给欧拉(Euler)的信中提出了以下猜想:

任何大于2的偶数,均可表示为两个素数之和(俗称为1+1)。

近三个世纪了,这一猜想既未被证明,也未被推翻(即未找到反例)。

请编写一个程序,在有限范围内(例如4~2000)验证哥德巴赫猜想成立。请注意:这只是有限的验证,不能作为对哥德巴赫猜想的证明。

分析:要将整数分解成两部分,然后判断分解出的两个整数是否都为素数。如是,则输出;否则,重新分解、判断。

程序如下:

#include "stdio.h" 
#include "math.h" 
main( ) 
{ int fflag(int i); 
 int i,n; 
 for(i=4; i<=2000; i+=2) 
 {for(n=2;n          if(fflag(n)) /*分别判断两个整数是否均为素数*/ 
 if(fflag(i-n)) 
 {printf("%d=%d+%d\n",i,n,i-n); /*如均为素数则输出*/ 
 break; 
 } 
 if(n==i)printf("error %d\n",i); 
 } 
} 
 
int fflag(int i) /*判断整数是否为素数*/ 
{ int j; 
 if(i<=1) return(0); 
 if(i==1) return(1); 
 if(!(i%2)) return(0); /*if no, return 0*/ 
 for(j=3;j<=(int)(sqrt((double)i)+1);j+=2) 
 if(!(i%j)) return(0); 
 return(1); /*if yes, return 1*/ 
}

请思考:如果在范围4~1 000 000内验证哥德巴赫猜想,该程序如何修改?

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门