콩부방

1284 : 암호 해독 본문

알고리즘 공부/CodeUp

1284 : 암호 해독

콩이아부지이 2021. 8. 19. 18:18
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