From 22514cfa1a13e43374b6e5fb1bf036e06fec1f15 Mon Sep 17 00:00:00 2001 From: bumpsoo Date: Fri, 7 Mar 2025 14:47:03 +0000 Subject: [PATCH] https://leetcode.com/problems/closest-prime-numbers-in-range --- medium/closest_prime_numbers_in_range.py | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 medium/closest_prime_numbers_in_range.py diff --git a/medium/closest_prime_numbers_in_range.py b/medium/closest_prime_numbers_in_range.py new file mode 100644 index 0000000..a3f13fb --- /dev/null +++ b/medium/closest_prime_numbers_in_range.py @@ -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 +