码迷,mamicode.com
首页 > 其他好文 > 详细

D. Taxes【分拆素数和】

时间:2020-03-19 15:15:34      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:center   大于   很多   ace   出现   因子   pac   main   实现   

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【分拆素数和】

标签:center   大于   很多   ace   出现   因子   pac   main   实现   

原文地址:https://www.cnblogs.com/AC-AC/p/12524347.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!