File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Sieve Algorithm
3
+ * Time O(n*log(log(n))) | Space O(n)
4
+ * https://leetcode.com/problems/closest-prime-numbers-in-range
5
+ * @param {number } left
6
+ * @param {number } right
7
+ * @return {number[] }
8
+ */
9
+ var closestPrimes = function ( left , right ) {
10
+
11
+ const isNotPrime = {
12
+ 1 : true // 1 is not prime number.
13
+ } ;
14
+
15
+ for ( let i = 2 ; i < right + 1 ; i ++ ) {
16
+ if ( ! isNotPrime [ i ] ) {
17
+ let factor = 2 ;
18
+ while ( i * factor <= right ) {
19
+ isNotPrime [ i * factor ] = true ;
20
+ factor ++ ;
21
+ }
22
+ }
23
+ }
24
+
25
+ const primesInOrder = [ ] ;
26
+
27
+ while ( left < right + 1 ) {
28
+ if ( ! isNotPrime [ left ] ) {
29
+ primesInOrder . push ( left ) ;
30
+ }
31
+ left ++ ;
32
+ }
33
+
34
+ let minDistance = Infinity ;
35
+ const ans = [ ] ;
36
+
37
+ for ( let i = 1 ; i < primesInOrder . length ; i ++ ) {
38
+
39
+ const prime1 = primesInOrder [ i ] ;
40
+ const prime0 = primesInOrder [ i - 1 ] ;
41
+
42
+ if ( prime1 - prime0 < minDistance ) {
43
+ minDistance = prime1 - prime0 ;
44
+ ans [ 0 ] = prime0 ;
45
+ ans [ 1 ] = prime1 ;
46
+ }
47
+ }
48
+
49
+ if ( ! ans . length ) return [ - 1 , - 1 ] ;
50
+ return ans ;
51
+ } ;
You can’t perform that action at this time.
0 commit comments