让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N。
输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
思路:
输入数字N后,在2~N中寻找素数,并判断相邻差值为2的两个数是否同时为素数。
当只有一对素数存在时,单独处理。
注意边界值,采用比较第i个和第i-2个数字,而不采用比较第i个和第i+2个数字,以避免跨边界的素数对也被算进来。
源代码:
import math
def Input():
N = int(input())
return N
def IsPrime(n):
if((n == 2)or(n == 3)):
return 1
if((n %6 != 1)and(n % 6 != 5)):
return 0
for i in range (5, int(math.sqrt(n))+1, 6):
if((n%i == 0)or(n%(i+2) == 0)):
return 0
return 1
if __name__ == '__main__':
p = []
num = 0
N = Input()
if(N == 3 or N == 4):
print('1',end = '')
else:
for i in range(4, N+1):
if((IsPrime(i) == 1)and(IsPrime(i-2)==1)):
num = num + 1
#print(i,' ',i-2)
print(num, end = '')