Problem Solving/Baekjoon
[백준] 1837 암호제작 - Brute Force / Java
graycode
2024. 3. 28. 19:01
• 문제 링크
1837번: 암호제작
원룡이는 한 컴퓨터 보안 회사에서 일을 하고 있다. 그러던 도중, 원룡이는 YESWOA.COM 으로부터 홈페이지 유저들의 비밀키를 만들라는 지시를 받았다. 원룡이는 비밀 키를 다음과 같은 방법으로
www.acmicpc.net
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.math.BigInteger;
import java.util.StringTokenizer;
public class Main {
static boolean[] nonPrime = new boolean[1000001];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
sieve();
StringTokenizer st = new StringTokenizer(br.readLine());
int n = verify(new BigInteger(st.nextToken()), Integer.parseInt(st.nextToken()));
bw.write(n == -1 ? "GOOD" : "BAD " + n);
bw.flush();
}
private static int verify(BigInteger p, int k) {
for (int i = 2; i < k; i++)
if (!nonPrime[i] && p.mod(BigInteger.valueOf(i)).equals(BigInteger.ZERO)) return i;
return -1;
}
private static void sieve() {
double sqrt = Math.sqrt(nonPrime.length);
for (int i = 2; i < sqrt; i++)
if (!nonPrime[i]) for (int j = i * i; j < nonPrime.length; j += i) nonPrime[j] = true;
}
}