验证哥德巴赫猜想:任一充分大的偶数,可以用两个素数之和表示,例如:
4 = 2 + 2
6 = 3 + 3
..
9 8 = 1 9 + 7 9
分析:我们先不考虑怎样判断一个数是否为素数,而从整体上对这个问题进行考虑,可以这样做:读入一个偶数n,将它分成p和q,使n = p + q。怎样分呢?可以令p从2开始,每次加1,而令q = n – p,如果p、q均为素数,则正为所求,否则令p = p + q再试。
参考程序:
#include #include int main( ) { long int j,n,p,q,flagp,flagq; printf("please input n :\n"); scanf("%ld",&n ); if (((n%2)!=0)||(n<=4)) printf("input data error!\n"); else { p = 1 ; do { p = p + 1 ; q = n - p ; flagp = 1 ; for(j=2;j<=(int)(sqrt(p));j++) /*判断p是否为素数*/ { if ((p%j)==0) { flagp = 0 ; break; /*不是素数,退出循环*/ } } flagq=1 ; for(j=2;j<=(int)(sqrt(q));j++) /*判断q是否为素数*/ { if ((q%j)==0) { flagq = 0 ; break ; /*不是素数,退出循环*/ } } } while(flagp*flagq==0); printf("%d = %d + %d \n",n,p,q); } }