[백준] 11653번 :소인수분해 - Python 파이썬
알고리즘 분류:
링크: https://www.acmicpc.net/problem/11653
11653번: 소인수분해
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
www.acmicpc.net
문제
정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.
입력
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
출력
N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.
제출한 답
T = int(input())
#T가 1이 될때까지 인수로 나눈다
while T != 1:
for i in range(2,int(T**0.5)+1):
if T % i == 0:
T = T//i
print(i)
break
#나눠지는 인수가 1 이외에 없을 때 종료
else:
print(T)
break
인수를 빠르게 확인하기 위해
T의 제곱근까지만 for문을 돌렸다.
T//2와 비교해 시간이 636ms에서 84ms까지 단축됐다.
T = int(input())
i = 2
while T != 1:
if i <= T**0.5:
if T % i == 0:
T = T//i
print(i)
i = 2
else:
i += 1
else:
print(T)
break
for문을 사용하지 않는 답. 위와 시간은 비슷하다.(76ms)
이게 최적의 답안이지만 먼가 긱한 느낌..
N = int(input())
m = 2
while N!=1:
if N%m==0:
print(m)
N = N//m
else:
m += 1
제일 간편한 답.
하지만 시간이 오래걸린다.(1600ms)
'알고리즘' 카테고리의 다른 글
[백준] 4948번 :베르트랑 공준 - Python 파이썬 (0) | 2021.08.25 |
---|---|
[백준] 1929번 :소수 구하기 - Python 파이썬 (0) | 2021.08.25 |
[백준] 2581번 :소수 - Python 파이썬 (0) | 2021.08.24 |
[백준] 1978번 :소수 찾기 - Python 파이썬 (0) | 2021.08.24 |
[백준] 1011번 :Fly me to the Alpha Centauri - Python 파이썬 (2) | 2021.08.24 |