信息学奥赛一本通C++语言——1157:哥德巴赫猜想

【题目描述】
哥德巴赫猜想的命题之一是:大于6 的偶数等于两个素数之和。编程将6~100所有偶数表示成两个素数之和。

【输入】
(无)

【输出】
分行输出:

例如:

6=3+3

8=3+5

(每个数只拆开一次,请保证第一个加数最小)

#include
#include
using namespace std;
bool prime(int num); //判断素数(质数)函数
int main() {
	for(int i=6; i<=100; i+=2) { //遍历6-100的偶数
		for(int j=2; j<=i/2; j++) { //遍历2~i/2的较小加数
			if(prime(j)&&prime(i-j)) { //素数(质数)判断:j与i-j为两个加数
				cout<<i<<"="<<j<<"+"<<i-j<<endl;
				break;
			}
		}
	}
	return 0;
}
bool prime(int num) {
	int i,mid=(int)sqrt(num);
	for(i=2; (i<=mid) && (num%i!=0); i++);//遍历2-mid的除数 
	if(i>mid) {//除数大于mid(for循环结束前进行了一次i++) 
		return true;//素数 (质数) 
	}
	return false;//非素数 
}

正确答案:
6=3+3
8=3+5
10=3+7
12=5+7
14=3+11
16=3+13
18=5+13
20=3+17
22=3+19
24=5+19
26=3+23
28=5+23
30=7+23
32=3+29
34=3+31
36=5+31
38=7+31
40=3+37
42=5+37
44=3+41
46=3+43
48=5+43
50=3+47
52=5+47
54=7+47
56=3+53
58=5+53
60=7+53
62=3+59
64=3+61
66=5+61
68=7+61
70=3+67
72=5+67
74=3+71
76=3+73
78=5+73
80=7+73
82=3+79
84=5+79
86=3+83
88=5+83
90=7+83
92=3+89
94=5+89
96=7+89
98=19+79
100=3+97

你可能感兴趣的:(信息学奥赛)