黑马程序员技术交流社区
标题:
哥德巴赫猜想的程序实现
[打印本页]
作者:
gxppq
时间:
2014-12-21 20:09
标题:
哥德巴赫猜想的程序实现
2000以内的正偶数都能够分解为两个素数之和(即验证歌德巴赫猜想对2000以内的正偶数成立)。
#include<stdio.h>
#include<math.h>
int fflag(int n);
void main()
{
int i,n;
for(i=4;i<=2000;i+=2)
{
for(n=2;n<i;n++) /*将偶数i分解为两个整数*/
if(fflag(n)) /*分别判断两个整数是否均为素数*/
if(fflag(i-n))
{
printf("%14d=%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==2)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*/
}
复制代码
程序中证明一个整数n是否为素数的调用函数fflag的算法是:如果n不能被2到根号n之间的整数整除,那么n就是素数。因为如果一个能被一个大于根号n的整数整除,那么商肯定小于根号n,所以也能被小于根号n整除,因此只要不能被小于根号n的整数整除,就一定不能被大于根号n的整数整除,只需要验证到根号n就可以。
作者:
小平
时间:
2014-12-21 20:31
同学们好!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2