MCPcopy Create free account
hub / github.com/Tiwarishashwat/InterviewCodes / closestPrimes

Method closestPrimes

ClosestPrimeNumbersInRange.java:2–37  ·  view source on GitHub ↗
(int left, int right)

Source from the content-addressed store, hash-verified

1class Solution {
2 public int[] closestPrimes(int left, int right) {
3 // O(R log(logR) + R-L)
4
5 // Sieve algorithm to find prime numbers between [1,right]
6 boolean prime[] = new boolean[right + 1];
7 Arrays.fill(prime,true);
8 prime[0] = false;
9 prime[1] = false;
10 // Sieve-> O(R log(logR))
11 for (int p = 2; p * p <= right; p++) {
12 if (prime[p]) {
13 for (int i = p * p; i <= right; i += p)
14 prime[i] = false;
15 }
16 }
17 // R-L
18 // find min diff b/w pair of prime numbers
19 int res[] = new int[]{-1,-1};
20 int minDiff = Integer.MAX_VALUE;
21 int prev=-1;
22 for (int i = left; i <= right; i++) {
23 if (prime[i]){
24 if(prev == -1){
25 prev = i;
26 }else{
27 if(i - prev < minDiff){
28 res[0] = prev;
29 res[1] = i;
30 minDiff = i-prev;
31 }
32 prev=i;
33 }
34 }
35 }
36 return res;
37 }
38}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected