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

PAT B1007 素数对猜想 (20 分)

时间:2019-02-10 15:03:36      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:时间   max   text   mes   lin   bottom   res   mat   count   

让我们定义d?n??为:d?n??=p?n+1???p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

现给定任意正整数N(<),请计算不超过N的满足猜想的素数对的个数。

输入格式:

输入在一行给出正整数N

输出格式:

在一行中输出不超过N的满足猜想的素数对的个数。

输入样例:

20

输出样例:

4
#include <stdio.h>
#include <algorithm>
#include <string>
#include <map>
#include <iostream>
#include <stack>
#include <math.h>
using namespace std;
const int maxn = 100010;
int index[maxn] = { 0 };
bool isPrime(int i){
    for (int k = 2; k <= sqrt(i); k++){
        if (i%k == 0)return false;
    }
    return true;
}
int main(){
    int n, count = 0;
    cin >> n;
    if (n == 1 || n == 2){
        cout << 0;
        return 0;
    }
    for (int i = 2; i <= n; i++){
        if (isPrime(i)){
            index[i] = 1;
            
        }
    }
    for (int i = 2; i <= n-2; i++){
        if(index[i]==1 && (index[i + 2] - index[i] == 0))count++;
    }
    cout << count;
    system("pause");
}

注意点:素数的判定一直是一个重点,本以为判断到平方根也会超时,结果没有还算好,有时间要去看一下时间复杂度最低的素数判定方法。这里我是把所有素数都存起来,用了hash,也可以生成一个判断一个,可以省点内存。

PAT B1007 素数对猜想 (20 分)

标签:时间   max   text   mes   lin   bottom   res   mat   count   

原文地址:https://www.cnblogs.com/tccbj/p/10359177.html

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