题目描述
哥德巴赫提出了以下的猜想:任何一个大于2的偶数都可以表示成2个质数之和。
质数是指除了1和本身之外没有其他约数的数。
如2和11都是质数。而6不是质数,因为6除了约数1和6之外还有约数2和3。
需要特别说明的是1不是质数。
请你编一个程序验证哥德巴赫猜想。
输入
共一行,包含一个大于2的偶数n。
输出
一组或多组由两个素数之和组成的表达式。
每组第一个数字要从小到大排列。
样例
输入
14
输出
3+11
7+7
代码:
#include<bits/stdc++.h>
using namespace std;
int n;
bool isprime(int x){
for(int i=2;i*i<=x;++i){
if(x%i==0) return false;
}
return true;
}
bool nengchai(int x){
bool flag=false;
for(int p=2;p<=x/2;p++)
if(isprime(p)&&isprime(x-p)){
cout<<p<<"+"<<x-p<<endl;
flag=true;
}
return flag;
}
int main()
{
cin>>n;
if(!nengchai(n)) cout<<"wrong"<<endl;
return 0;
}