Python/Baekjoon

백준 11653번 문제 풀이 - 공부하는 도비

DOVISH WISDOM 2021. 10. 24. 19:50  
728x90
반응형

https://www.acmicpc.net/problem/11653

 

11653번: 소인수분해

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

www.acmicpc.net

 

 

이 문제는 입력 받은 수를 소인수분해 하는 문제이고, 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력해야 한다.

소인수분해를 못하는 사람은 없을 꺼라고 생각하고, 코드를 바로 보면

 

우선, 큰 while문 안에 또 다른 while문을 넣었다.

첫번째 while 조건은 입력 받은 수가 1이 될 때까지 반복문을 돌리는 것이고,

두번째 while 조건은 나누는 수(d)가 입력받은 수(a)를 나누었을 때, 나머지가 0이 되도록 d를 1씩 증가시키면서, a를 나누었을 때 나머지가 0이 될 때 까지 반복문을 돌리는 것이다.

 

 

while(a != 1):
    d = 2
    while(True):
        if a % d == 0:
            a = a //d
            print(d)
            break
        else:               
            d += 1
반응형