class Solution:
def closestPrimes(self, left: int, right: int) -> List[int]:
sieve=[False]*(right+1)
results=[-1,-1]
prep=-1
for p in range(2,right+1):
if not sieve[p]:
for p2 in range(p*2,right+1,p):
sieve[p2]=True
if left<=p<=right:
if results[0]==-1:
results[0]=p
elif results[1]==-1:
results[1]=p
else:
# print(p,results)
if p-prep<results[1]-results[0]:
results=[prep,p]
prep=p
if results[0]==-1 or results[1]==-1:
return [-1,-1]
else:return results
prep保存上一个prime, results只有上一个距离最近的prime不一定是上一个