https://roomconerdeveloper.tistory.com/94
백준 15711 환상의 짝꿍 자바
환상의 짝꿍 문제 보러가기 15711번: 환상의 짝꿍 환상의 나라 디디랜드에서는 인연의 증표로 끈을 하나씩 가지고 있다. 그들은 지극히 평범한 방법으로 이 끈을 이용하여 어떤 두 사람이 환상
roomconerdeveloper.tistory.com
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
static boolean[] prime = new boolean[2000001]; //2000000의 제곱이 최대수다 여기서 나머지가 나오지 않는 것이 소수
static ArrayList<Integer> list = new ArrayList<>();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
isPrimeNumber();
isPrime();
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
while(N --> 0) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
long a = Long.parseLong(st.nextToken());
long b = Long.parseLong(st.nextToken());
long sum = a+b;
if(sum <= 3)
sb.append("NO").append("\n");
else if(sum%2 == 0)
sb.append("YES").append("\n");
else {
if((sum-2) % 2 == 0)
sb.append("NO").append("\n");
else {
sum -= 2;
for(long i : list) {
int temp = (int)Math.sqrt(sum); //제곱보다 크다면 멈춰도 된다
if(i > temp || i == list.get(list.size()-1)) { //for이 끝날 때 까지 없다면 소수다
sb.append("YES").append("\n");
break;
}
if(sum % i == 0) {
sb.append("NO").append("\n");
break;
}
}
}
}
}
System.out.println(sb);
}
static void isPrimeNumber() {
for(int i = 2; i < Math.sqrt(2000000); i++) {
if(prime[i])
continue;
for(int j = i * i; j <= 2000000; j += i) {
prime[j] = true;
}
}
}
static void isPrime() {
for(int i = 2; i <= 2000000; i++) {
if(!prime[i])
list.add(i);
}
}
}
'백준' 카테고리의 다른 글
[백준] 1644 소수의 연속합 (0) | 2021.11.16 |
---|---|
[백준] 2485 가로수 (0) | 2021.11.16 |
[백준] 6588 골드바흐의 추측 (0) | 2021.11.16 |
[백준] 2580 스도쿠 (0) | 2021.11.06 |
[백준] 2661 좋은수열 (0) | 2021.11.03 |