BOJ 코딩테스트/Silver
BOJ 2312번 : 수 복원하기 (Python/Silver 3)
dev스카이
2023. 9. 24. 20:23
2312번: 수 복원하기
첫째 줄에 테스트 케이스의 수가 주어진다. 각 테스트 케이스마다 양의 정수 N (2 ≤ N ≤ 100,000)이 주어진다.
www.acmicpc.net
설명
양의 정수 N을 소인수분해 한 결과를 출력하는데, 인수와 인수의 수를 출력하는 문제이다.
Solution
#20:00 - 20:08
#양의 정수 N을 소인수분해 한 결과를 출력해라
#메모리와 시간이 오래 걸리는 코드
import sys
input = sys.stdin.readline
def res(n):
for i in range(2, n + 1):
cnt = 0 #인수가 곱해진 횟수 초기화
while n % i == 0: #정수 n이 i로 나누어지면
cnt += 1 #인수가 곱해진 횟수 카운트
n /= i #몫을 n에 저장
if n % i != 0: #여기서 판단하기, 나누어 떨어지지 않으면 현재 인수와 곱해진 횟수 출력
print(i, cnt)
for _ in range(int(input())):
n = int(input())
res(n)