문제 링크: https://www.acmicpc.net/problem/11653
문제
정수 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보다 큰 자연수를 소인수(소수인 인수)들만의 곱으로 나타내는 것 또는 합성수를 소수의 곱으로 나타내는 방법
코드 풀이
- num 변수를 통해 정수 N을 입력받는다.
- 소인수는 1보다 큰 자연수 이므로, 정수를 나누기 위해 가장 작은 수 2를 i 변수에 할당한다. 이때, 정수가 1일 경우 문제와 동일하게 아무것도 출력하지 않도록 한다.
num = int(input()) i = 2
- while문을 통해 num이 1을 초과하는 경우, num을 i로 나눌 수 있는 경우, i로 나눈 뒤, i를 출력하고, i로 나눌 수 없는 경우 i에 1을 더해주어 3, 4, 5 ... 가 차례대로 오게한다.
반응형
'IT > 알고리즘' 카테고리의 다른 글
[BAEKJOON] 백준 4948번: 베르트랑 공준 (Python) (0) | 2021.09.05 |
---|---|
[BAEKJOON] 백준 1929번: 소수 구하기 (Python) (0) | 2021.09.05 |
[BAEKJOON] 백준 2581: 소수 (Python) (0) | 2021.08.31 |
[BAEKJOON] 백준 1978번: 소수 찾기 (Python) (0) | 2021.08.31 |
[BAEKJOON] 백준 10757번: 큰 수 A+B (Python) (0) | 2021.08.25 |
댓글