[단계별로 풀어보기 - 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일경우에는 소인수 배열에 추가하지 않으며, 나눠질때까지 계속해서 소인수 배열에 추가한다.
'공부 > 알고리즘' 카테고리의 다른 글
[단계별로 풀어보기] [python3] 기본 수학 2 - 베르트랑 공준 (4948) (0) | 2022.04.26 |
---|---|
[단계별로 풀어보기] [python3] 기본 수학 2 - 소수 구하기 (1929) (0) | 2022.04.26 |
[단계별로 풀어보기] 기본 수학 2 - 소수 (2581) (0) | 2022.04.18 |
[단계별로 풀어보기] 기본 수학 2 - 소수 찾기 (1978) (0) | 2022.04.12 |
[단계별로 풀어보기] 조건문 - 주사위 세개 (2480) (0) | 2022.04.12 |