개발 공부/알고리즘 문제풀이

[백준] 11653. 소인수분해

5묘 2022. 7. 31. 22:51
 

11653번: 소인수분해

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

www.acmicpc.net


원리는 N을 나누어 떨어지게 하는 수가 소수인지 여부를 판별하고, 소수이면 해당 수를 출력한 뒤,
N에는 해당 소수로 나눈 몫을 저장해 N이 1이 될 때까지 반복문을 돌리며 나누는 소수를 출력하도록 했다.
하지만 내 생각보다 시간이 많이 걸렸다. 제곱근을 안쓰고 2부터 num까지 수로 모두 num을 나눠서 소수를 판별했기 때문일 것이다.

# 11653 소인수분해 (2192ms)

N = int(input())
cnt = 0
while N > 1:
    for num in range(2, N+1):
        flag = False
        if N % num == 0:
            for z in range(2, num):
                if num % z == 0:
                    flag = True
                    break
        else:
            continue

        if flag is True:
            continue
        else:
            print(num)
            N = N // num
            break

'개발 공부 > 알고리즘 문제풀이' 카테고리의 다른 글

[백준] 4948. 베르트랑 공준  (0) 2022.07.31
[백준] 1929. 소수 구하기  (0) 2022.07.31
[백준] 2581. 소수  (0) 2022.07.31
[백준] 1978. 소수 찾기  (0) 2022.07.31
[백준] 2775. 부녀회장이 될테야  (0) 2022.07.27