输入一个偶数 T,验证 4∼T 所有偶数是否符合哥德巴赫猜想:任一大于2的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如 10,10=3+7=5+5,则 10=5+5是错误答案。
输入格式
第一行输入一个正偶数 T
输出格式
首先先输出正偶数 i,然后输出等号,再输出加和为i 且第一个加数最小的两个质数,以加号隔开。
Sample Input
20
Sample output
4=2+2
6=3+3
8=3+5
10=3+7
12=5+7
14=3+11
16=3+13
18=5+13
20=3+17
#include <bits/stdc++.h>
using namespace std;
bool zhishu(int num)
{ // 判断是否为质数
int cnt = 0;
for (int i = 2; i <= sqrt(num); i++)
{
if (num % i == 0)
cnt++;
}
if (cnt == 0)
return 1;
else
return 0;
}
void fun(int n)
{
int i, j, k;
for (i = 4; i <= n; i += 2)
{
if (i == 4) // 4为特殊
cout << i << "=2+2\n";
else
for (j = 3; j <= i; j += 2)
{ // 2以后的只有奇数是质数
if (zhishu(j) && zhishu(i - j))
{ // 判段两个加数是否为质数
cout << i << "=" << j << "+" << i - j << "\n";
break;
}
}
}
}
int main()
{
int n;
cin >> n;
fun(n);
return 0;
}