

.编程程序实现验证:哥德巴赫猜想,一个充分大的偶数(大于等于6 ),它可以分解为两个素数(质数)的和。请你编程用输出的结果证明,100以内的所有偶数都可写成两个质数的和。实现要求:该程序至少要自定义一个函数。输出要求:每个偶数只要找到一种两个质数和的形式即可,


#include <stdio.h>
#include <math.h>
int prime(int x);
int main(void){
int i,j,k;
int count=0;
for(i=4;i<100;i=i+2){ // 这里for循环的初始赋值是否应该改为i=4 ?
// https://baike.baidu.com/item/%E5%93%A5%E5%BE%B7%E5%B7%B4%E8%B5%AB%E7%8C%9C%E6%83%B3/72364?fr=ge_ala
//k=(int)sqrt(i);
for(j=2;j<i;j++){ // 这里for循环的循环条件改为j<i,因为这里是计算式子,不是求素数,所以循环条件要修改一下
//printf("j=%d,i-j=%d,i=%d,prime(%d)=%d,prime(%d)=%d\n",j,i-j,i,j,prime(j),i-j,prime(i-j));
if(prime(j)&&prime(i-j)){
printf("%d=%d+%d\t",i,j,i-j);
count++;
if(count%5==0){
printf("\n");
}
break;
}
}
}
return 0;
}
int prime(int x){
int i,k;
if(x<=1){ // 小于等于1的数不是素数,返回0
return 0;
}
k=(int)sqrt(x);
for(i=2;i<=k;i++){
if(x%i==0){
return 0;
}
}
return 1; // 循环结束再返回1,即当区间2到sqrt(x)之间的每个整数都不能整除x,说明x是素数,此时再返回1
}
