반응형
문제 설명
자바 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
static List<Integer> primeNumberList=new ArrayList<Integer>();
static StringBuilder sb=new StringBuilder();
public static void main(String[] args) throws Exception{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
primeNumberList.add(2);
addPrimeNumberList(2000001);
int t=Integer.parseInt(br.readLine());
for(int i=0;i<t;i++){
StringTokenizer strToken=new StringTokenizer(br.readLine()," ");
long a=Long.parseLong(strToken.nextToken());
long b=Long.parseLong(strToken.nextToken());
환상의짝꿍인가요(a+b);
}
System.out.print(sb.toString());
}
public static void 환상의짝꿍인가요(long num){
if(num<4){
sb.append("NO\n");
}else if(num%2==0){
sb.append("YES\n");
}else{
if(isPrimeNumber(num-2)) sb.append("YES\n");
else sb.append("NO\n");
}
}
public static boolean isPrimeNumber(long num){
long x=(long)Math.sqrt(num);
for (Integer primeNumber:primeNumberList) {
if(primeNumber>x){
return true;
}
if(num%primeNumber==0) return false; //나누어떨어지면 소수가 아님
}
return true;
}
public static void isDivided(int number){//소수로 나누었을때 떨어지는지 확인
int x=(int)Math.sqrt(number);
for (Integer primeNumber:primeNumberList) {
if(primeNumber>x){
primeNumberList.add(number);
return;
}
if(number%primeNumber==0) return; //나누어떨어지면 소수가 아님
}
}
public static void addPrimeNumberList(int number){//소수리스트에 추가
for(int i=3;i<=number;i+=2){
isDivided(i);
}
}
}
문제 설명
이번 문제는 https://travelbeeee.tistory.com/493 를 보고 풀었습니다. 내용 설명이 잘되어 있습니다.
반응형
'프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
백준 1260 DFS와 BFS 자바 (0) | 2021.06.27 |
---|---|
백준 10872 피보나치 수 5 자바 (0) | 2021.06.27 |
백준 6588번 골드바흐의 추측 자바 (0) | 2021.06.20 |
백준 1644 소수의 연속합 (0) | 2021.06.04 |
백준 2485 가로수 자바 (0) | 2021.06.03 |
댓글