05:验证歌德巴赫猜想
总时间限制:
1000ms
内存限制:
32767kB
描述
验证“歌德巴赫猜想”,即:任意一个大于2的偶数均可表示成两个素数之和。
输入
输入只有一个正整数x。(x是偶数,x <= 2000 且 x > 2)
输出
输出这个数的所有分解形式,形式为:
x = y + z
其中x为待验证的数,y和z满足y + z = x,而且 y <= z,y和z均是素数。
如果存在多组分解形式,则按照y的升序输出所有的分解,每行一个分解表达式。
注意数和符号之间隔一个空格。
样例输入
输入样例1: 10 输入样例2: 100
样例输出
输出样例1: 10 = 3 + 7 10 = 5 + 5 输出样例2: 100 = 3 + 97 100 = 11 + 89 100 = 17 + 83 100 = 29 + 71 100 = 41 + 59 100 = 47 + 53
#include <bits/stdc++.h>
using namespace std;
bool isprime(int x)
{
if(x==2) return true;
for(int i=2;i<=sqrt(x);i++)
if(x%i==0) return false;
return true;
}
int main()
{
int x,y;
cin>>x;
if(x>=4)
{
for(int i=2;i<=x/2;i++)
{
y=x-i;
if(isprime(i)==1&&isprime(y)==1)
{
cout<<x<<" "<<"="<<" "<<i<<" "<<"+"<<" "<<y<<endl;
}
}
}
return 0;
}