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