원리는 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 |