728x90

문제) 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.

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

출력) N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.

n = int(input())
for i in range(2, n+1):
  if n == 1: break
  if n % i == 0:
    while(1):
      if n % i != 0 or n == 1: break
      else:
        n = n / i
        print(i)

풀이 : n이 1로 입력된경우 또는 더 이상 소인수분해가 불가능한 경우 for문을 빠져나오도록 해준다. 그렇지 않으면 소인수분해를 진행하면서 결과값을 출력해준다. i는 2부터 n까지의 숫자를 차례대로 사용하며 만약 n이 i로 나누어떨어진다면 더이상 나누어떨어지지않을 때까지 반복하여 나누어준다. 동시에 i를 출력해준다. 위와같은 과정을 n이 최종적으로 1이 될때까지 반복하여주면 된다.

'코딩 공부 > 파이썬' 카테고리의 다른 글

백준) 2581 - 소수  (0) 2022.02.21
백준) 1978 - 소수 찾기  (0) 2022.02.21
백준 기본수학 1 풀이 - 4  (0) 2022.02.08
백준 기본수학 1 풀이 - 3  (0) 2022.02.07
백준 기본수학 1 풀이 - 2  (0) 2022.02.03

+ Recent posts