验证哥德巴赫猜想
验证哥德巴赫猜想:每一个大于2的偶数都可以表示成两个质数之和。输入偶数N(N>=4),N的一个表示式子。
4=2+2
6=3+3
8=3+5
10=3+7
12=5+7
100=47+53
110=97+13
样例输入:
4
样例输出:
4=2+2
时间限制:
1000
空间限制:
65536
提示:
要求:输出式子第一个质数最小的情况,且不大第二质数。
我的思路就是,首先是枚举第一个数,每次枚举判断这个数是不是质数,如果是的话,再判断n-i是否是质数,如果是的话,那么就break,输出了。
这道题的难点是写一个函数,这个函数的作用是判断这个数是否是质数,所以代码就显而易见了。
验证哥德巴赫猜想:
#include <iostream>
#include <math.h>
using namespace std;
int pd(int x)
{
bool f=true;
int k;
if(x==1)
f=false;
for(k=2;k<=sqrt(x);k++)
{
if(x%k==0)
{
f=false;
break;
}
else
f=true;
}
return f;
}
int main()
{
int n;
cin>>n;
for(int i=2;i<n;i++)
if(pd(i))
if(pd(n-i))
{
cout<<n<<"="<<i<<"+"<<n-i<<endl;
return 0;
}
return 0;
}
这道题说实话不难,是XJOI上面1级10段的题目,一般都是基础算法,到2段以后才是普及组难度,所以后期我会一直给大家解答一点儿XJOI上面基础算法中比较难的题目。