第一个循环是[5, n+1),没有n+1第二个测试点1不通过;
最后一个超时要把判断素数的循环改成到i的平方根,使得程序从O(n^2)变为O(根号n)。
import math
if __name__ == '__main__':
n = int(input())
r = 0
lastP = 3
for i in range(5, n + 1, 2):
isPrime = True
for j in range(3, int(math.sqrt(i))+1, 2):
if i % j == 0:
isPrime = False
break
if isPrime:
if i - lastP == 2:
r += 1
lastP = i
print(r)