본문 바로가기
IT/알고리즘

[BAEKJOON] 백준 11653번: 소인수분해 (Python)

by 무녈 2021. 9. 3.

문제 링크: https://www.acmicpc.net/problem/11653

 

11653번: 소인수분해

첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.

www.acmicpc.net


문제

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

입력

첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.

출력

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


코드

num = int(input())
i = 2
while num > 1:
    if num % i == 0:
        num = num // i
        print(i)
    else:
        i += 1

문제 요약

정수 N을 더 이상 나눌 수 없을 때 까지, 나눌 수 있는 최소 숫자들을 구하는 문제이다.

소인수 분해: 1보다 큰 자연수를 소인수(소수인 인수)들만의 곱으로 나타내는 것 또는 합성수를 소수의 곱으로 나타내는 방법

코드 풀이

  1. num 변수를 통해 정수 N을 입력받는다.
  2. 소인수는 1보다 큰 자연수 이므로, 정수를 나누기 위해 가장 작은 수 2를 i 변수에 할당한다. 이때, 정수가 1일 경우 문제와 동일하게 아무것도 출력하지 않도록 한다.
    num = int(input())
    i = 2​
  3. while문을 통해 num이 1을 초과하는 경우, num을 i로 나눌 수 있는 경우, i로 나눈 뒤, i를 출력하고, i로 나눌 수 없는 경우 i에 1을 더해주어 3, 4, 5 ... 가 차례대로 오게한다.

 

반응형

댓글