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.三处加快效率的地方

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容