引入
使用函數驗證哥德巴赫猜想:任何一個不小於 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;
}
}