版权声明:虽然本蒟蒻很菜,但各位dalao转载请注明出处谢谢。 https://blog.csdn.net/xuxiayang/article/details/88774454
设 表示 的除 以外的最大因子,现在给定一个数 ,将 拆成若干个数 ,使得 的情况下,求
当 是质数时,显然 是最小的
所以我们尽量把 拆成质数即可
根据哥德巴赫猜想:任何一个大于等于4的偶数均可表示成两个质数之和
所以说大于4的偶数答案即为2
如果是奇数呢?
把它当成偶数+1不就行了咯,答案就是3
但还是需要考虑一种特殊情况,因为。。。。2也是质数!
所以我们还要判断这个数能否表示成一个质数+2,如果可以那么它的答案也是2
剩下的?日常 判断素数咯
#include<cstdio>
using namespace std;int n;
inline bool pd(int n)
{
if(n==1) return false;
if(n==2||n==3) return true;
if(n%6!=1&&n%6!=5) return false;
for(register int i=5;i*i<=n;i+=6)
if(n%i==0||n%(i+2)==0) return false;
return true;
}
signed main()
{
scanf("%d",&n);
if(pd(n)) return putchar(49)&0;
if(!(n&1)||pd(n-2)) return putchar(50)&0;
return putchar(51)&0;
}