您的位置:首页 > 其它

codeforces 735D Taxes 哥德巴赫猜想

2016-11-28 12:14 148 查看
点击打开链接

n不是素数时 &&拆分时不是素数 

n是偶数&&n>2 则答案(n的最大因子)>=2 

n是奇数,答案(最大因子)>=3

若拆分成素数 

哥德巴赫猜想 :大于2的偶数能拆分成两个质数之和 所以答案最小能取到2

n为奇数时,n-3为偶数(n-3能拆成两个素数之和,3为素数) 所以奇数的答案<=3

奇数能否为两个素数之和?  因为n为奇数所以拆分的两个素数k,n-k一个为奇数一个为偶数 若k为偶数&&k为素数 k=2 判断n-2是否为素数即可 


#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
typedef long long ll;
using namespace std;
bool check(ll x)
{
for(int i=2;i*i<=x;i++)
{
if(x%i==0)
return false;
}
return true;
}
int main()
{
ll n;

cin>>n;
if(n==2||check(n))//n是素数则答案为1
puts("1");
else if(n%2==0)
puts("2");
else
{
if(check(n-2))
puts("2");
else
puts("3");
}
return 0;
}





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: