CodeWars 스물 여섯 번째 문제

Updated:

Gap in Primes

public static long[] gap(int g, long m, long n) {
    long beforePrime = Long.MIN_VALUE;

    for(long i = m ; i <= n ; i++) {        	
        if(findPrimeNumber(i)) {
            if(i - beforePrime == g) {
                return new long[] {beforePrime, i};
            }

            beforePrime = i;
        }
    }

    return null;
}

public static boolean findPrimeNumber(long i) {

    for(int j = 2 ; j < i/2 ; j++) {
        if(i%j == 0) {
            return false;
        }
    }

    return true;
}
  • 알고리즘으로는 어려운 것은 없다.
  • 최초 코드는 beforePrime = 0 으로 초기화 시키고 if(i - beforePrime == g) 조건에 beforePrime!=0의 조건도 추가하였다. 그 이유는 첫번째 소수는 비교할 대상이 없기 때문인데 best 코드에서는 long beforePrime = Long.MIN_VALUE;로 초기화 시켜서 내가 추가한 조건을 지울 수 있었다.
  • 다음에는 이런 경우 유용하게 써먹어야 겠다.