콩부방
1284 : 암호 해독 본문
728x90
두 소수의 곱을 암호로 사용하는 알고리즘은 큰 수의 소인수분해가 어렵기 때문에 안전하다고 알려져있다.
그렇지만, 만약 두 소수를 잊어버리면 어떻게 될까? 굉장히 난감할 것이다.
이에 대비해 어떤 수(n)가 입력되면 두 소수의 곱으로 나타낼 수 있으면 두 소수를 오름차순으로 출력하고,
그렇지 않으면 "wrong number"를 출력하는 프로그램을 작성하시오.
입력
어떤 수 n이 입력된다.(단, 1<=n<=10,000,000)
출력
n을 두 소수의 곱으로 나타낼 수 있으면 두 수를 오름차순으로 출력한다.
(단, 가능한 소수 중 가장 작은 소수와의 곱으로 나타낸다.)
하고, 그렇지 않으면 "wrong number"를 출력한다.
입력 예시 예시 복사
21
출력 예시
3 7
import java.util.Scanner;
public class Main {
static boolean prime(int n) {
if(n == 2)return true;
for (int i = 2; i <= n/2; i++) {
if(n % i == 0)return false;
}
return true;//소수면 true
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a=0,b=0;
for (int i = 2; i < n; i++) {
if(prime(i)) { //i가 소수일때
if(n % i == 0) {
if(prime(n/i)) {
a = i;
b = n/i;
break;
}
}else continue;
}
}
if(a >= 2)System.out.println(a+" "+b);
else System.out.println("wrong number");
}//main
}
728x90
'알고리즘 공부 > CodeUp' 카테고리의 다른 글
1286 : 최댓값, 최솟값 (0) | 2021.08.21 |
---|---|
1285 : 계산기 2 (0) | 2021.08.19 |
1283 : 주식 투자 (0) | 2021.08.19 |
1282 : 제곱수 만들기 (0) | 2021.08.18 |
1281 : 홀수는 더하고 짝수는 빼고 3 (0) | 2021.08.18 |
Comments