이전 포스팅 한 소수 구하기를 응용하여 풀 수 있다.
주어진 수를 소수의 작은 순서로 나누어 떨어지는 데 까지 나누고
마지막 남은 나머지가 소수 리스트 안에 있다면 해결
소수 리스트 안에 없다면 소인수 분해가 불가능 하다고 판단.
import math
n = int(input())
array = [True for i in range(n + 1)]
for i in range(2, int(math.sqrt(n)) + 1):
if array[i]:
j = 2
while i * j <= n:
array[i * j] = False
j += 1
data = []
for i in range(2, n + 1):
if array[i]:
data.append(i)
while True:
if n in data:
print(n)
break
elif n == 1:
break
for i in range(2, n + 1):
if n % i == 0:
n //= i
print(int(i))
break
'백준 알고리즘 (Baekjoon Algorithm)' 카테고리의 다른 글
[파이썬] 백준 알고리즘 No.4948 베르트랑 공준 (0) | 2021.12.10 |
---|---|
[파이썬] 백준 알고리즘 No.3053 택시 기하학 (0) | 2021.12.10 |
[파이썬] 백준 알고리즘 No.2581 소수 (0) | 2021.12.09 |
[파이썬] 백준 알고리즘 No.1744 수 묶기 (0) | 2021.12.09 |
[파이썬] 백준 알고리즘 No.1439 뒤집기 (0) | 2021.12.08 |