1007. 素數對猜想 (求素數改進效率)

讓我們定義 dn 為:dn = pn+1 - pn,其中 pi 是第i個素數。顯然有 d1=1 且對于n>1有 dn 是偶數。“素數對猜想”認為“存在無窮多對相鄰且差為2的素數”。

現給定任意正整數N (< 105),請計算不超過N的滿足猜想的素數對的個數。

輸入格式:

每個測試輸入包含1個測試用例,給出正整數N。

輸出格式:

每個測試用例的輸出占一行,不超過N的滿足猜想的素數對的個數。

#include <iostream>
#include<stdio.h>

using namespace std;

bool isPrime(int n){
    if(n==2) return true; //=,==
    if(n>=3){             //增快效率,一是i+=2,二是i*i<=n 
        for (int i=3;i*i<=n;i+=2){
        if(n%i==0) return false;
        }
        return true;
    }
    return false;

}
int main()
{
    int n,num=0,temp=5;
    scanf("%d",&n);
    while(temp<=n){
        if(isPrime(temp)&&isPrime(temp-2)){
            num++;
        }
        temp+=2; //增快效率,temp+=2 
    }
    printf("%d",num);

    return 0;
}

注意事項

1.=要注意,例如i*i<=n,特例4,考慮邊界情況,很多錯都是在等號處犯錯
2.三處加快效率的地方

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容