import sys
import math
input = sys.stdin.readline
N = int(input())
# 에라토스 테네스의 채 로 소수들을 찾는다.
def prime_num(n):
arr = [True]*(n+1)
prime_arr = []
for i in range(2, int(math.sqrt(n)+1)):
if arr[i]==True:
j=2
while(i*j)<=n:
arr[i*j]=False
j+=1
for i in range(2,len(arr)):
if arr[i] :
prime_arr.append(i)
return prime_arr
prime_Arr = prime_num(N)
for i in prime_Arr:
while 1:
A = N%i
if A:
break
else:
N = N//i
print(i)
key point :
특정 수 N의 약수들을 일렬로 나열했을 때 그 중 가운데의 수를 중심으로 약수가 대칭된다.
따라서 N의 약수를 찾고 싶을때 반쪽을 기준으로 하면 다른쪽 약수를 알 수 있다.
'Algorithms과 자료구조' 카테고리의 다른 글
해시테이블 (0) | 2022.01.16 |
---|---|
RB_TREE(삭제) (0) | 2021.12.08 |
RB_Tree(레드블랙트리)_삽입 (0) | 2021.12.05 |