您的位置:首页 > 其它

Codeforces 735D Taxes

2017-07-18 10:40 399 查看
题目链接:http://codeforces.com/problemset/problem/735/D

题意:将一个数拆成若干个素数的和(也可以不拆),使得拆分的个数和最小。

分析:偶数很简单,根据哥德巴赫猜想,任一大于2的偶数都可写成两个素数之和,所以为2。奇数情况下,如果是素数则为1,如果不是素数,发现可以拆分成2和一个素数,如果不能则只能拆成三份,事实上只有这两种情况了,我也不知道为什么QAQ,当时以为能接着拆就写了个循环,只过了十几组数据就WA掉了。

AC代码如下

#include<bits/stdc++.h>
using namespace std;
bool isprime(int n)
{
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0) return 0;
}
return 1;
}
int main()
{
int n;
cin>>n;
if(n==2)
cout<<"1"<<endl;
else if(n%2==0)
cout<<"2"<<endl;
else if(isprime(n))
cout<<"1"<<endl;
else if(isprime(n-2))
cout<<"2"<<endl;
else cout<<"3"<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  codeforces