문제
정수 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 값을 새로 잡고 반복하면 자동으로 소인수분해되는 프로그램이 된다.
'PYTHON' 카테고리의 다른 글
파이썬과 친해지길 바라, 백준 2753번, 윤년 [PYTHON] (0) | 2023.07.31 |
---|---|
파이썬과 친해지길 바라, 백준 1789번, 소인수분해 [PYTHON] (0) | 2023.07.31 |
파이썬과 친해지길 바라, 백준 10817번, 세수 [PYTHON] (0) | 2023.07.28 |
파이썬과 친해지길 바라, 백준 9498번, 시험성적 [PYTHON] (0) | 2023.07.28 |
파이썬과 친해지길 바라, 백준 2935번, 소음 [PYTHON] (0) | 2023.07.26 |