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就可以。 |
|