728x90
반응형
문제 출처:https://www.acmicpc.net/problem/11653
11653번: 소인수분해
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
www.acmicpc.net
풀이:
N = int(input())
i = 2 # 제일 작은 나누는 수 선언
while N != 1: # 입력받은 수 1이 아닐떄
if N%i ==0: # N 나누기 i 의 몫이 0 >> 즉 2의배수일때
N /= i # N은 2로 나누고 다시 N에 저장
print(i) # 2출력
else: # 2의 배수가 아니면
i +=1 # 최소공배수를 +1
if i>N: # 쭉 진행하다가 최소공배수보다 바뀌는 N보다 클떄
break # for문 탈출
다른 풀이:
n = int(input())
d = 2
while d*d <= n:
if n % d == 0:
print(d)
n //= d
else:
d += 2 if d > 2 else 1
if n > 1:
print(n)
출처: 백준알고리즘 rapaeljin 님 소스
반응형
댓글