引入
使用函数验证哥德巴赫猜想:任何一个不小于 6 的偶数均可表示为两个奇素数之和。例 如 6=3+3,8=3+5,…,18=5+13。将 6~100 之间的偶数都表示成两个素数之和,打印时 一行打印 5 组。试编写相应程序。
分析
任何一个不小于 6 的偶数均可表示为两个奇素数之和。
-
第一步:需要一个循环循环区间
-
第二步:循环奇数,并且判断该奇数是否为素数,如果为素数求相加等于该偶数两个奇素数(可能是多个),并且每隔5个换行
我们可以把求是否为素数的函数独立出来
代码
#include <stdio.h>
int prime(int m);
int main(){
/**
使用函数验证哥德巴赫猜想:任何一个不小于 6 的偶数均可表示为两个奇素数之和。
例 如 6=3+3,8=3+5,…,18=5+13。将 6~100 之间的偶数都表示成两个素数之和,打印时 一行打印 5 组。试编写相应程序。
*/
/**
分析:
任何一个不小于 6 的偶数均可表示为两个奇素数之和。
需要一个循环循环区间
循环奇数,并且判断该奇数是否为素数,如果为素数求该偶数两个奇素数,并且每隔5个换行
*/
//这里我们的m、n的值已经给定了,当然也可以自己输入
int i, m = 6,n = 100,count;
//循环区间,都是偶数所以 m+=2
for(; m <= n; m+=2){
//初始化i=3,最小奇素数是3
for(i = 3; i <= m; i+=2){
//奇数不一定为素数,所以需要判断
if(prime(i) && prime(m-i)){
printf("%d=%d+%d ", m,i,m-i);
count++;
if(count%5 == 0){
printf("\n");
}
}
}
}
return 0;
}
int prime(int m){
//只有1和它本身能被其整除,1不是素数,2是素数
int i;
if(m == 1){
return 0;
}else if(m == 2){
return 2;
}else{
for(i = 2; i < m; i++){
if(m%i == 0){
return 0;
}
}
return m;
}
}