어제 자기 전에 수학 문제 슥 풀고 자려고 했는데 30분 동안 안 풀려서 그냥 잤다.. 분명 난 완전 잘 했는데 왜 안 되지 하고 누워서 생각하다보니.. 아, 전부다 나눠서 소인수 출력 후 소수인 case에 대해 else로 처리하면 되겠다는 생각이 들었다. 그럼 이전에 소수 찾는 알고리즘 쓰면 되겠구나.
근데 일단 한 번 수정해야한다. 왜 runtime error가 안 떴는지 모르겠는데
소수 찾는 code만 이용해서 알고리즘 복잡도를 낮출 수 있을 것 같다.
N = int(input())
def divide(num):
i = 2
if num == 1:
return 1
while i*i <= num:
if num % i == 0:
num = num // i
print(i)
return num
i += 1
def check_prime(num):
i = 2
if num == 1:
return 0
while i * i <= num:
if num % i == 0:
return 0
i += 1
return 1
while N != 1:
if check_prime(N) == 0:
N = divide(N)
else:
print(N)
N = 1
그래서 code를 한 번 수정했다.
그냥 소수찾는 알고리즘에서 continue를 적용하면 쉽게 풀 수 있을 것 같았고 실제로 그러했다!
N = int(input())
def check_prime(num):
i = 2
if num <= 1:
return 0
while i * i <= num:
if num % i == 0:
num = num // i
print(i)
continue
i += 1
print(num)
check_prime(N)