/*********************************************************
* 程序名称:啊哈C语言
* 页 码:第175页 代码
* 功 能:赫尔巴特猜想,输出所有可能的拆分
* 编写时间: 2021年 11月11日
* 代码提供:sunpats
* *******************************************************
* 都可写成两个质数之和。但是哥德巴赫自己无法证
* 明它,于是就写信请教赫赫有名的大数学家欧拉帮忙证明,
* 但是一直到死,欧拉也无法证明。
* 因现今数学界已经不使用“1也是素数”这个约定,原
* 初猜想的现代陈述为:任一大于5的整数都可写成三个质数之和。
* *******************************************************/
#include <iostream>
#include <cstdlib>
using namespace std;
/*判断 x 是否为质数*/
int prime(int x) {
int isok = 1; /*是质数*/
for(int i=2; i<x; i++) {
if(x % i == 0) {
isok = 0; /*是合数*/
break;
}
}
return isok; /*1-质数,2-合数*/
}
/*main() */
int main(int argc, char const *argv[])
{
int counta, countb;
int a, b, k, i;
/*为0表示是素数*/
for(int k=4; k<=100; k+=2) {
printf("%d ", k);
for(a=2; a<=k/2; a++) {
/*a 是质数 */
if(prime(a)) {
b = k - a;
/*b 是质数 */
if(prime(b)) {
printf("= %d + %d ", a, b);
}
}
}
printf("\n");
}
system("pause");
return 0;
}
运行结果:
/***********************
4 = 2 + 2
6 = 3 + 3
8 = 3 + 5
10 = 3 + 7 = 5 + 5
12 = 5 + 7
14 = 3 + 11 = 7 + 7
16 = 3 + 13 = 5 + 11
18 = 5 + 13 = 7 + 11
20 = 3 + 17 = 7 + 13
22 = 3 + 19 = 5 + 17 = 11 + 11
24 = 5 + 19 = 7 + 17 = 11 + 13
26 = 3 + 23 = 7 + 19 = 13 + 13
28 = 5 + 23 = 11 + 17
30 = 7 + 23 = 11 + 19 = 13 + 17
32 = 3 + 29 = 13 + 19
34 = 3 + 31 = 5 + 29 = 11 + 23 = 17 + 17
36 = 5 + 31 = 7 + 29 = 13 + 23 = 17 + 19
38 = 7 + 31 = 19 + 19
40 = 3 + 37 = 11 + 29 = 17 + 23
42 = 5 + 37 = 11 + 31 = 13 + 29 = 19 + 23
44 = 3 + 41 = 7 + 37 = 13 + 31
46 = 3 + 43 = 5 + 41 = 17 + 29 = 23 + 23
48 = 5 + 43 = 7 + 41 = 11 + 37 = 17 + 31 = 19 + 29
50 = 3 + 47 = 7 + 43 = 13 + 37 = 19 + 31
52 = 5 + 47 = 11 + 41 = 23 + 29
54 = 7 + 47 = 11 + 43 = 13 + 41 = 17 + 37 = 23 + 31
56 = 3 + 53 = 13 + 43 = 19 + 37
58 = 5 + 53 = 11 + 47 = 17 + 41 = 29 + 29
60 = 7 + 53 = 13 + 47 = 17 + 43 = 19 + 41 = 23 + 37 = 29 + 31
62 = 3 + 59 = 19 + 43 = 31 + 31
64 = 3 + 61 = 5 + 59 = 11 + 53 = 17 + 47 = 23 + 41
66 = 5 + 61 = 7 + 59 = 13 + 53 = 19 + 47 = 23 + 43 = 29 + 37
68 = 7 + 61 = 31 + 37
70 = 3 + 67 = 11 + 59 = 17 + 53 = 23 + 47 = 29 + 41
72 = 5 + 67 = 11 + 61 = 13 + 59 = 19 + 53 = 29 + 43 = 31 + 41
74 = 3 + 71 = 7 + 67 = 13 + 61 = 31 + 43 = 37 + 37
76 = 3 + 73 = 5 + 71 = 17 + 59 = 23 + 53 = 29 + 47
78 = 5 + 73 = 7 + 71 = 11 + 67 = 17 + 61 = 19 + 59 = 31 + 47 = 37 + 41
80 = 7 + 73 = 13 + 67 = 19 + 61 = 37 + 43
82 = 3 + 79 = 11 + 71 = 23 + 59 = 29 + 53 = 41 + 41
84 = 5 + 79 = 11 + 73 = 13 + 71 = 17 + 67 = 23 + 61 = 31 + 53 = 37 + 47 = 41 + 43
86 = 3 + 83 = 7 + 79 = 13 + 73 = 19 + 67 = 43 + 43
88 = 5 + 83 = 17 + 71 = 29 + 59 = 41 + 47
90 = 7 + 83 = 11 + 79 = 17 + 73 = 19 + 71 = 23 + 67 = 29 + 61 = 31 + 59 = 37 + 53 = 43 + 47
92 = 3 + 89 = 13 + 79 = 19 + 73 = 31 + 61
94 = 5 + 89 = 11 + 83 = 23 + 71 = 41 + 53 = 47 + 47
96 = 7 + 89 = 13 + 83 = 17 + 79 = 23 + 73 = 29 + 67 = 37 + 59 = 43 + 53
98 = 19 + 79 = 31 + 67 = 37 + 61
100 = 3 + 97 = 11 + 89 = 17 + 83 = 29 + 71 = 41 + 59 = 47 + 53
请按任意键继续. . .
* ******************/
声明:本代例子码源自教材非原创,是笔者的学习笔记,仅用于学习交流。