D. Taxes分拆素数和

Posted ac-ac

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了D. Taxes分拆素数和相关的知识,希望对你有一定的参考价值。

D. Taxes【分拆素数和】

题意

给出一个整数n,n可以由很多其他数的和组成,但不能出现1,当然也可以不拆分,然后问你:给你个n然后让你求n的最大因子为多少(不包括n本身),然后如果n被拆分的话,就是求拆分出来的这些数的因子和,规矩同上。

思路

哥德巴赫猜想:任何一个大于二的偶数都可以分解为两个素数和。 然后假如是奇数的话,直接特判下就好了。

代码实现

//链接:https://codeforces.com/problemset/problem/735/D
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 5;
bool f(ll n){
    for(int i = 2; i * i <= n; i++){
        if(n%i==0) return 0;
    }
    return 1;
}
int main(void) {
    ll n;
    cin >> n;
    if(f(n)){
        cout<<1<<endl;
        return 0;
    }
    if(n%2==0){
        if(n==2) cout<<1<<endl;
        else cout<<2<<endl;
        return 0;
    }
    else{
        if(f(n-2)) cout<<2<<endl;
        else cout<<3<<endl;
    }
    return 0;
}

以上是关于D. Taxes分拆素数和的主要内容,如果未能解决你的问题,请参考以下文章

C - 分拆素数和 (HDU - 2098)

hdu2098分拆素数和(素数+暴力)

分拆素数和

CF735D Taxes 哥德巴赫猜想判定素数 进一步猜想

HDU 2098 分拆素数和

分拆素数和(素数打表)