PTA 1007 素数对猜想

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

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

输入格式:
输入在一行给出正整数N。

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

输入样例:
20
输出样例:
4


用笨方法肯定超时的,只能优化,一、只看奇数,二、利用5以后的质数都是 6n+1,6n+5的特性进行筛选。

n = int(input())
def sushu(n):
    a, b = 3, 5
    c = 1
    for i in range(5,n+1,2):
        if i % 6 == 1 or i % 6 ==5:
            for j in range(3,int(pow(i,0.5)+1),2):
                if i%j == 0:
                    break
            else:
                a,b = b,i
                if b - a ==2:
                    c+=1
    return c
if n <= 4:
    print(0)
else:
    print(sushu(n))

你可能感兴趣的:(python实战)