让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N
(<105),请计算不超过N
的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N
。
输出格式:
在一行中输出不超过N
的满足猜想的素数对的个数。
输入样例:
20
结尾无空行
输出样例:
4
结尾无空行
实现代码:
import math
# 判断一个数是否为素数
def sushu(x):
for i in range(2, int(math.sqrt(x) + 1)):
if x % i == 0:
return 0
return 1
# N以内的素数
N = int(input())
# 统计素数对的对数
hit = 0
# 开始统计素数的位置
k = 2
for j in range(3, N + 1):
# 如果为偶数就之间跳过(偶数不可能为素数(2除外))
if j % 2 != 0:
if sushu(j) == 1:
# 此处选择一个参数存储上一个素数,方便计算
if j - k == 2:
hit += 1
k = j
# 输出满足结果的素数对
print(hit)