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

CF735D Taxes

时间:2018-12-29 23:30:02      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:string   ret   isp   ade   cst   cto   turn   header   als   

CF735D Taxes

第一次碰到哥德巴赫猜想的题目.
首先考虑质数,直接输出1
考虑1,直接输出1
考虑偶数.可以分解成两个质数.
考虑不是质数奇数,奇数必须有一奇数一偶数相加.
偶数为质数的只有2,所以判断这个数减去2是否是质数
如果是的话,输出2
否则输出3.

/*header*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cmath>
#define rep(i , x, p) for(int i = x;i <= p;++ i)
#define sep(i , x, p) for(int i = x;i >= p;-- i)
#define gc getchar()
#define pc putchar
#define ll long long
#define mk make_pair
#define fi first
#define se second
using std::min;
using std::max;
using std::swap;

inline int gi() {
    int x = 0,f = 1;char c = gc;
    while(c < '0' || c > '9') {if(c == '-')f = -1;c = gc;}
    while(c >= '0' && c <= '9') {x = x * 10 + c - '0';c = gc;}return x * f;
}

void print(int x) {
    if(x < 0) pc('-') , x = -x;
    if(x >= 10) print(x / 10);
    pc(x % 10 + '0');
}

bool isprime(int n) {
    if(n < 2)return false;
    for(int i = 2;i * i <= n;++ i) 
    if(n % i == 0) return false;
        return true;
}
int main() {
    int n = gi();
    if(isprime(n)) puts("1");
    else if( !(n & 1) ) puts("2");
    else if(isprime(n - 2)) puts("2");
    else puts("3");
    return 0;
}

CF735D Taxes

标签:string   ret   isp   ade   cst   cto   turn   header   als   

原文地址:https://www.cnblogs.com/gzygzy/p/10197793.html

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