您的位置:首页 > 其它

Basic Level 1007. 素数对猜想 (20)

2014-03-20 17:14 281 查看
让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

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

输入格式:每个测试输入包含1个测试用例,给出正整数N。

输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。

输入样例:
20

输出样例:
4


C++

#include <functional>
#include <algorithm>
#include <cstdio>
#include <vector>
using namespace std;

int Prime[1000000]={0};
bool Sign[1000000] ={false};
int BuildPrime(int limit){
int pos=0;
for(int i = 2;i<=limit;++i){
if(!Sign[i]) Prime[pos++] = i;
for(int j = 2*i;j<=limit;j+=i){
Sign[j] = true;
}
}
return pos;
}

int main() {
int N;
scanf("%d",&N);
int sum = 0;
int num = BuildPrime(N);
for(int i=1;i<num;++i){
sum+=(Prime[i]==Prime[i-1]+2)?1:0;
}
printf("%d\n",sum);
return 0;
}



Python



def Prime(max_n):
sign = [True] * (max_n+1)
arr = []
for i in xrange(2, max_n+1):
if sign[i]:arr.append(i)
for j in xrange(i*2,max_n+1,i):
sign[j] = False
return arr

arr = Prime(int(raw_input()))
sum = 0
for i in xrange(1,len(arr)):
if arr[i] == arr[i-1]+2:sum = sum +1
print sum
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Basic Level PAT