알고리즘

[백준/Java]Q11653

  • -
반응형

백준 알고리즘 9단계 기본 수학2 11653번 문제입니다.


Q. 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.

[입력]
- 첫째 줄에 정수 N이 주어진다.

 

[조건]
- 1 ≤ N ≤ 10000000
- N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.

풀이

소인수분해는 1보다 큰 자연수를 소수인 인수들만의 곱으로 나타내는 것이다.

Ex)

  • 72 = 2 * 2 * 2 * 3 * 3
  • 82 = 2 * 41  
  • 125 = 5 * 5 * 5
  • 28 = 2 * 2 * 7

소인수분해 결과를 오름차순으로 출력하면 되는 문제이기 때문에 소수 중 가장 작은 수인 2부터 나누기 시작해서 0으로 떨어지지 않는 경우는 증감시키고 0으로 떨어지는 경우는 반복을 해주게 되면 문제를 풀 수 있다.

 

소스
package com.baek.algo.step09;

import java.util.Scanner;

public class Q11653 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int n = sc.nextInt();

		if(n == 1) {
			System.out.println("");
		} else {
			int num = n;
			int a = 2;

			while(true) {
				if(num <= 1) {
					break;
				} else {
					if(num % a == 0) {
						num = num / a;
		
						System.out.println(a);
					} else {
						a = a + 1;
					}
				}
			}
		}

		sc.close();
	}
}
반응형

'알고리즘' 카테고리의 다른 글

[백준/Java]Q2798  (0) 2021.08.25
[백준/Java]Q4948  (0) 2021.07.21
[백준/Java]Q2581  (0) 2021.07.21
[백준/Java]Q1978  (0) 2021.07.21
[백준/Java]Q10757  (0) 2021.07.17
Contents

포스팅 주소를 복사했습니다.

이 글이 도움이 되었다면 공감 부탁드립니다.