C語言程式設計(第三版)何欽銘著 習題6-5
習題一覽表 |
---|
1. C語言程式設計(第三版)何欽銘著 習題2-1 |
2.C語言程式設計(第三版)何欽銘著 習題2-2 |
3.C語言程式設計(第三版)何欽銘著 習題2-3 |
4.C語言程式設計(第三版)何欽銘著 習題2-4 |
5.C語言程式設計(第三版)何欽銘著 習題2-5 |
6.C語言程式設計(第三版)何欽銘著 習題2-6 |
7.C語言程式設計(第三版)何欽銘著 習題3-1 |
8.C語言程式設計(第三版)何欽銘著 習題3-2 |
9.C語言程式設計(第三版)何欽銘著 習題3-3 |
10.C語言程式設計(第三版)何欽銘著 習題3-4 |
11.C語言程式設計(第三版)何欽銘著 習題3-5 |
12.C語言程式設計(第三版)何欽銘著 習題4-1 |
13.C語言程式設計(第三版)何欽銘著 習題4-2 |
14.C語言程式設計(第三版)何欽銘著 習題4-3 |
15.C語言程式設計(第三版)何欽銘著 習題4-4 |
16.C語言程式設計(第三版)何欽銘著 習題4-5 |
17.C語言程式設計(第三版)何欽銘著 習題4-6 |
18.C語言程式設計(第三版)何欽銘著 習題4-7 |
19.C語言程式設計(第三版)何欽銘著 習題4-8 |
20.C語言程式設計(第三版)何欽銘著 習題4-9 |
21.C語言程式設計(第三版)何欽銘著 習題4-10 |
22.C語言程式設計(第三版)何欽銘著 習題4-11 |
23.C語言程式設計(第三版)何欽銘著 習題5-1 |
24.C語言程式設計(第三版)何欽銘著 習題5-2 |
25.C語言程式設計(第三版)何欽銘著 習題5-3 |
26.C語言程式設計(第三版)何欽銘著 習題5-4 |
27.C語言程式設計(第三版)何欽銘著 習題5-5 |
28.C語言程式設計(第三版)何欽銘著 習題5-6 |
29.C語言程式設計(第三版)何欽銘著 習題5-7 |
30.C語言程式設計(第三版)何欽銘著 習題6-1 |
31.C語言程式設計(第三版)何欽銘著 習題6-2 |
32.C語言程式設計(第三版)何欽銘著 習題6-3 |
33.C語言程式設計(第三版)何欽銘著 習題6-4 |
文章目錄
- C語言程式設計(第三版)何欽銘著 習題6-5
-
- 題目
- 分析過程
-
- 輸入
- 輸出
- 代碼
- 運作結果
題目
使用函數驗證哥德巴赫猜想;
任何一個不小于 6 的偶數均可表示為兩個奇素數之和。
例如 6=3+3,8=3+5,…,18=5+13。
将6~100 之間的偶數都表示成兩個素數之和,列印時一行列印 5組。試編寫相應程式。
分析過程
輸入
條件:無
輸出
條件:将6~100 之間的偶數都表示成兩個素數之和。
要求,列印時一行列印 5組。
代碼
#include <stdio.h>
#include <math.h>
int prime(int n);
int Goldbach(int n);
int main(void) {
int count=0;/*可實作哥德巴赫猜想的數量*/
for(int i=6; i<= 100; i++){/*i選擇小于21,是因為Fibonacci 數的第21項為10946(已經大于10000),是以循環至第21項已經足夠了*/
if(Goldbach(i)==1) {
count++;
if ( count%5 ) printf(", ");/*一行不足五個,用‘,’隔開*/
else printf("\n");/*一行滿五個進行換行*/
}
}
return 0;
}
int prime(int n){/*判斷n是否為素數*/
if(n<=1) return 0;/*小于1不是素數*/
if(n==2||n==3) return 1;/*2和3為素數*/
for(int i=2; i<=n/2;i++){/*判斷大于三的數是否為素數*/
if(n%i==0) return 0;/*判斷i是否能将n整除,若能整除,則說明n不是素數,傳回0(代表n不是素數)*/
}
return 1;/*若此時函數還未終止,說明未找到能将n整除的數,即n為素數*/
}
int Goldbach(int n){/*存儲整數n的哥德巴赫猜想*/
for(int i=2; i<=n/2; i++){
if(prime(i)==1&&prime(n-i)==1){/*将整數n拆分成i和n-i兩個素數的和,成立,則輸出,并傳回該數可以實作哥德巴赫猜想*/
printf("%d=%d+%d", n, i, n-i);
return 1;/*可實作哥德巴赫猜想*/
}
}
return 0;/*不可實作哥德巴赫猜想*/
}