공부/알고리즘
[단계별로 풀어보기 - python3] 기본 수학 2 - 소인수분해 (11653)
도리암
2022. 4. 18. 23:33
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일경우에는 소인수 배열에 추가하지 않으며, 나눠질때까지 계속해서 소인수 배열에 추가한다.