发布网友 发布时间:2024-10-18 22:26
共1个回答
热心网友 时间:10分钟前
验证哥德猜想
验证哥德猜想:任一充分大的偶数,可以用两个素数之和表示,例如:
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 <math.h>
#include <stdio.h>
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) ;
}