codeforces 735D

題目鏈接:http://codeforces.com/problemset/problem/735/D

原來有這樣一個哥德巴赫猜想
      如果一個數是偶數,可以分解爲2個質數之和; 

1.如果n本身爲質數直接輸出1

2.如果n爲偶數 可以分解爲 兩個質數之和 輸出2

3.如果n爲奇數,可以分解爲一個質數+一個偶數,輸出3(有一個比較特殊情況的偶數2,本身爲質數,所以奇數的時候需要進行判斷n-2是否爲質數,如果是:輸出2)

根據這個思想:

代碼如下:

#include <bits/stdc++.h>

using namespace std;

bool judge(int n){  // 判斷是一個數是否爲質數;
    long long i;
    for(i = 2; i*i <= n; ++i){
        if(n%i == 0) return false;
    }
    return true;
}

int main()
{
    int n;
    scanf("%d", &n);
    if(judge(n)) printf("1\n");
    else if(!(n&1)) printf("2\n");
    else {
        if(judge(n-2))
            printf("2\n");
        else
            printf("3\n");
    }
}


發佈了118 篇原創文章 · 獲贊 8 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章