Stay Hungry Stay Foolish

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)