This commit is contained in:
parent
a0c6abb2f2
commit
22514cfa1a
1 changed files with 27 additions and 0 deletions
27
medium/closest_prime_numbers_in_range.py
Normal file
27
medium/closest_prime_numbers_in_range.py
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# https://leetcode.com/problems/closest-prime-numbers-in-range
|
||||
|
||||
from typing import List
|
||||
|
||||
class Solution:
|
||||
def sieve(self, n):
|
||||
is_prime = [True] * (n + 1)
|
||||
is_prime[0] = is_prime[1] = False
|
||||
for k in range(2, int(n**0.5) + 1):
|
||||
if is_prime[k]:
|
||||
for multiple in range(k *k, n + 1, k):
|
||||
is_prime[multiple] = False
|
||||
return [num for num, prime in enumerate(is_prime) if prime]
|
||||
|
||||
|
||||
def closestPrimes(self, left: int, right: int) -> List[int]:
|
||||
sieve = self.sieve(right)
|
||||
result: List[int] = [-1, -1]
|
||||
nums = [num for num in sieve if num >= left]
|
||||
min = float('inf')
|
||||
for i in range(len(nums) - 1 ):
|
||||
d = nums[i + 1] - nums[i]
|
||||
if min > d:
|
||||
result = [nums[i], nums[i + 1]]
|
||||
min = d
|
||||
return result
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue