728x90
난이도 - 브론즈 2
문제
소수를 매우 좋아하는 수학자가 있다. 이 수학자는 매번 전화번호를 받을 때 마다, 그 전화번호가 소수인지 아닌지를 검사한다. 수학자는 자신의 모든 친구의 전화번호가 소수인지 아닌지를 기억하고 있다.
계속해서 늘어나는 휴대전화 인구의 급증에 따라 정부는 한 자리를 기존 번호 앞에 붙이는 정책을 시행하기로 했다.
수학자는 큰 고민에 빠졌다. 소수 전화번호를 가지고 있는 친구의 전화번호가 이제 평범한 숫자가 될 수도 있기 때문이다.
수학자의 친구 중 한 사람의 원래 전화번호와 새로이 앞에 붙는 번호 한 자리가 주어졌을 때, 원래 전화번호와 새로운 전화번호가 모두 소수인지 아닌지를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 여섯 자리의 기존 전화번호와 새로 추가되는 한 자리 번호가 주어진다. 기존 전화번호는 0으로 시작하지 않으며, 새로 추가되는 한 자리 번호는 0이 아니다.
출력
원래 전화번호와 새로운 전화번호가 소수이면 Yes를, 아니면 No를 출력한다.
728x90
import java.io.*;
import java.util.StringTokenizer;
public class Main7789 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int phoneNum = Integer.parseInt(st.nextToken());
int add = Integer.parseInt(st.nextToken());
if (!isPrime(phoneNum))
bw.write("No");
else {
int newNum = add * 1000000 + phoneNum;
if (isPrime(newNum))
bw.write("Yes");
else
bw.write("No");
}
bw.flush();
br.close();
bw.close();
}
static boolean isPrime(int n) {
if (n % 2 == 0 || n % 3 == 0)
return false;
for (int i = 5; i * i <= n; i += 6) {
if (n % i == 0 || n % (i + 2) == 0)
return false;
}
return true;
}
}
728x90
'백준 > Java' 카테고리의 다른 글
[백준 풀이] 1747번(소수&팰린드롬) (0) | 2024.06.25 |
---|---|
[백준 자바] 21919번(소수 최소 공배수) (0) | 2024.06.24 |
[백준 자바] 1644번(소수의 연속합) (0) | 2024.06.24 |
[백준 자바] 1016번(제곱 ㄴㄴ수) (0) | 2024.06.24 |
[백준 자바] 24039번(2021은 무엇이 특별할까?) - 연속한 두 소수의 곱 (0) | 2024.06.23 |