让我们定义dn 为:dn=pn+1-pn,其中p i 是第i个素数,显然有d 1 =1,且对于n>1有dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(<105 ),请计算不超过N的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N。
输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
代码
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
def main():
n = int(input())
count = 0
for i in range(2, n - 1):
if is_prime(i) and is_prime(i + 2):
count += 1
print(count)
main()
首先,我们定义一个函数 is_prime,用于判断一个数是否为素数。这个函数首先判断 n 是否小于 2,如果是,就返回 false。然后,我们使用循环遍历 2 到 n 的平方根的整数加 1 的范围,如果 n 能被某个数整除,就返回 false。如果循环结束后没有返回 false,就说明 n 是素数,返回 true。
然后,我们定义主函数 main,在这个函数中,我们输入一个数 n。然后,我们使用循环遍历 2 到 n 的范围,判断 i 和 i+2 是否都是素数,如果是,就将计数器 count 加 1。最后,我们输出 count 即可。