[단계별로 풀어보기 - python3] 기본 수학 2 - 소인수분해 (11653)

2022. 4. 18. 23:33공부/알고리즘

11653번: 소인수분해 (acmicpc.net)

 

11653번: 소인수분해

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

www.acmicpc.net

정수 N을 소인수분해 하는 문제다.

 

먼저 정수 N의 인수를 전부 구한 뒤, 가장 작은 인수들로 더 나눠지지 않을 정도로 나누기를 반복하는 로직이다.

n = int(input())
m = n
insu = []
for i in range(1, n+1):
    if n%i == 0:
        insu.append(i)
        
soinsu = []
for k in insu:
    if k == 1:
        continue
    while m%k == 0:
        m = m/k
        soinsu.append(k)

if n>=2:
    for m in soinsu:
        print(m)

n이 1일경우에는 소인수 배열에 추가하지 않으며, 나눠질때까지 계속해서 소인수 배열에 추가한다.