-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path121.go
More file actions
40 lines (33 loc) · 841 Bytes
/
121.go
File metadata and controls
40 lines (33 loc) · 841 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
func sieve(n int) []bool {
prime := make([]bool, n + 1)
for i := range prime {
prime[i] = true
}
prime[0], prime[1] = false, false
for p := 2; p*p <= n; p++ {
if prime[p] {
for i := p * p; i <= n; i += p {
prime[i] = false
}
}
}
return prime
}
func closestPrimes(left int, right int) []int {
primes := []int{}
sieveArr := sieve(right)
for num := left; num <= right; num++ {
if sieveArr[num] {
primes = append(primes, num)
}
}
res := []int{-1, -1}
minVal := math.MaxInt32
for i := 1; i < len(primes); i++ {
if primes[i] - primes[i - 1] < minVal {
minVal = primes[i] - primes[i - 1]
res = []int{primes[i -1], primes[i]}
}
}
return res
}