题目:一个偶数总能表示为两个素数之和。
程序分析:我去,这是什么题目,要我证明这个问题吗?真不知道怎么证明。那就把一个偶数分解成两个素数吧。
代码:
#include <stdio.h>
#include <math.h>
int IsPrime (int m)
{
for(int i=2;i<=(int)sqrt((double)m);i++) {
if(m%i==0){
return 0;
}
}
return 1;
}
int main()
{
int n; //存储输入的数字
printf("请输入一个大于2的偶数:\n");
scanf("%d",&n);
while(n%2!=0 || n<=2){
printf("你输入的不符合要求,请重新输入:\n");
scanf("%d",&n);
}
printf("%d这个数符合要求\n",n);
int i=0;
for( i = 2;i < n;i++ ) {
if ( IsPrime(i) && IsPrime(n-i) )
break;
}
printf("%d可以表示为两个素数之和,他们是%d和%d\n",n,i,n-i);
return 0;
}
输入输出
请输入一个大于2的偶数:
100
100这个数符合要求
100可以表示为两个素数之和,他们是3和97