问题描述:
解题思路:
1、素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数。
2、为了提速先排除2和3的倍数,然后从5开始排除。方法是用N去除从5到N的算术平方根之间的整数,
如果能除尽,N为合数,如果都除不尽,N就是素数。
3、将素数存入列表,然后判断后一位与当前位是否差2。
Python 代码:(偶尔超时)
import math
def prime(num):
if num != 2 and num % 2 == 0 or num != 3 and num % 3 == 0: # 为了提速先排除2和3的倍数,然后从5开始排除
return False
for i in range(5, int(math.sqrt(num) + 1), 2):
if num % i == 0:
return False
return True
n = int(input())
li = [i for i in range(2, n + 1) if prime(i) and prime(i + 2) and (i + 2 <= n)] # 每组素数对都应该是素数且相差2,将满足条件的素数放入li
print(len(li))