본문 바로가기

PYTHON

파이썬과 친해지길 바라, 백준 11653번, 소인수분해 [PYTHON]

문제

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

입력

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

출력

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


N = int(input())
M = 2
while N != 1:
    if N % M == 0 :
        print (M)
        N = N // M 
    else : M += 1

살짝 어려운데, 소인수 분해의 원리를 잘 생각해 보면 풀린다.

정수 N의 값을 입력 받는다.

M 은 소인수분해 해줄 수를 잡는다.

 

제시된 사항 처럼 1이 아닐때만 코드가 실행된다.

나머지를 구하는 mod 연산자를 이용하여

N % M을 하였을 때 나머지가 0인 수를 가지는 M이라면, 소인수분해가 가능한 수라고 판단, print 해준다.

그리고 해당 수로 N // M 을 통하여 N 값을 새로 잡고 반복하면 자동으로 소인수분해되는 프로그램이 된다.