반응형

에라토스테네스의 체 2

[백준 Baekjoon] 1990번 소수인팰린드롬 - JAVA

[백준 Baekjoon] 1990번 소수인팰린드롬 - JAVA 문제 풀이 문제에서 주어진 a와 b의 범위가 최대 100,000,000 - 5로 매우 큽니다. 이렇게 큰 범위에서 소수인지 판별할 때는 에라토스테네스의 체를 사용하는 것이 효율적입니다. 다음과 같이 에라토스테네스의 체를 사용하여 소수인지 저장합니다. public static boolean[] isPrime = new boolean[100_000_001]; public static void eratosthenes() { isPrime[0] = isPrime[1] = true; for (int i = 2; i * i

[백준 Baekjoon] 15711번 환상의 짝궁- JAVA

[백준 Baekjoon] 15711번 환상의 짝궁- JAVA 문제 풀이 문제의 설명만 보면 정말 간단한 문제처럼 보인다. A, B를 더한 값을 소수 2개로 만들 수 있는지 검사하면 된다. 하지만 제한사항의 A와 B의 최댓값이 2 x 10^12로 매우 커서 일반적인 방법으로는 불가능하다. A와 B의 합이 최대 4 * 10^12로 범위가 매우 큰데 그것의 루트값 2000000으로만 검사해주면 된다.. 합이 4미만의 경우 합이 4미만인 경우 소수 2개로 만드는 방법은 없다. 합이 짝수인 경우 골드바흐의 추축에 의하면 2보다 큰 모든 짝수는 두 개의 소수의 합으로 표시할 수 있다. 합이 홀수인 경우 두 수의 합이 홀수가 되려면 짝수 + 홀수이어야만 한다. 따라서 짝수인 소수 + 홀수인 소수로 동일한 합을 만들 ..

반응형