11653번 : 소인수분해 문제
정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/11653
11653번: 소인수분해
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
www.acmicpc.net
풀이 코드
n = int(input())
if n == 1:
print('')
else:
for i in range(2, n+1):
if n % i == 0:
while n % i == 0:
print(i)
n = n / i
n = int(input())
- 입력받은 정수를, 변수 n 에 저장
- input() 을 통해 한 줄의 문자열을 입력받음
- 입력받은 문자열을 정수로 처리하기 위해 int() 함수를 사용
if n == 1: / print('')
- 입력받은 정수 n 이 1인 경우
- 아무것도 출력하지 않아야 하므로, 빈 문자열을 출력
else:
- 입력받은 정수 n 이 2 이상의 정수인 경우
for i in range(2, n+1):
- range() 를 사용하여 2부터 n 까지 for문을 반복
- i 값으로 2 부터 n까지 들어감
- 소인수분해는 1보다 큰 자연수로 나누어야 하므로, 2부터 시작
if n % i == 0:
- 입력받은 정수 n 를 i 로 나누었을 때, 나누어 떨어지는 경우
- 아래에서 while문을 작성하지만, if 문을 작성하면 코드 수행이 빨라짐 (참고)
while n % i == 0:
- 입력받은 정수 n 을 i로 나누었을 때, 나누어 떨어질 때 까지 while 문을 반복
print(i)
- i로 나누어 떨어지는 경우, 소인수 분해가 가능한 자연수이므로 출력
n = n / i
- i 로 나누어 떨어지는 경우이므로, n을 i로 나누어 소인수 분해 진행
나동빈 '이것이 코딩 테스트다 with 파이썬' 책을 참고하여 작성하였습니다.
https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC
'백준 알고리즘 문제 풀이 [Python]' 카테고리의 다른 글
[백준/Python] 4948번 베르트랑 공준 (기본수학2) (0) | 2023.02.25 |
---|---|
[백준/Python] 1929번 소수 구하기 (기본수학2) (0) | 2023.02.25 |
[백준/Python] 2581번 소수 (기본수학2) (1) | 2023.02.25 |
[백준/Python] 1978번 소수 찾기 (기본수학2) (0) | 2023.02.25 |
[백준/Python] 10757번 큰 수 A+B (기본수학1) (0) | 2023.02.25 |