题目描述
输入一个偶数,验证 4~N 所有偶数是否符合哥德巴赫猜想:任一大于 2 的偶数都可写成两个质数之和。(如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如 10,10=3+7=5+5,则 10=5+5 是错误答案。)
输入格式
一个整数 N。
输出格式
若干行,每行一个等式,如样例所示。
样例数据
输入样例 #1 | 输出样例 #1 |
---|---|
10 | 4=2+2 6=3+3 8=3+5 10=3+7 |
样例分析
如上所述。
数据范围
100% 的数据:1≤n≤10000
解题:
#include<bits/stdc++.h>
using namespace std;
int n;
bool isprime(int m){
if(m<=1) return false;
for(int i=2;i<=sqrt(m);i++)if(m%i==0)return false;
return true;
}
void divide(int n){
int j;
for(int i=2;i<n;i++){
if(!isprime(i))continue;
j=n-i;
if(!isprime(j))continue;
cout<<n<<"="<<i<<"+"<<j<<endl;
break;
}
}
int main(){
cin>>n;
if(n<=2)return 0;
for(int i=4;i<=n;i+=2)divide(i);
return 0;
}