题目描述
输入一个偶数 N,验证 4∼N 所有偶数是否符合哥德巴赫猜想:任一大于 2 的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如 1010,10=3+7=5+5,则 10=5+5 是错误答案。
输入格式
第一行输入一个正偶数 N
输出格式
输出 N−2/2 行。对于第 i 行:
首先先输出正偶数 2i+2,然后输出等号,再输出加和为 2i+2 且第一个加数最小的两个质数,以加号隔开。
输入输出样例
输入 #1
10
输出 #1
4=2+2 6=3+3 8=3+5 10=3+7
#include<bits/stdc++.h>
using namespace std;
bool zs(int n)//判断质数
{
if(n<=1)return 0;
for(int i=2;i*i<=n;i++)
{
if(n%i==0)return 0;
}
return 1;
}
void gdbh(int n)
{
for(int i=2;i<=n;i++)//枚举
{
if(zs(i)&&zs(n-i))//如果是质数
{
printf("%d=%d+%d\n",n,i,n-i);
return;//退出
}
}
}
int main()
{
int n;
cin>>n;
for(int i=4;i<=n;i+=2)//因为是4至n,而且只有偶数,所以用i=4;i<=n;i+=2
{
gdbh(i);
}
return 0;
}