[Silver III] 수 복원하기 - 2312
성능 요약
메모리: 34536 KB, 시간: 1652 ms
분류
수학, 정수론, 소수 판정, 에라토스테네스의 체, 소인수분해
제출 일자
2025년 5월 20일 23:03:58
문제 설명
양의 정수 N이 주어졌을 때, 이 수를 소인수분해 한 결과를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 수가 주어진다. 각 테스트 케이스마다 양의 정수 N (2 ≤ N ≤ 100,000)이 주어진다.
출력
각 테스트 케이스마다 각 인수와 그 인수가 곱해진 횟수를 한 줄씩 출력한다. 출력 순서는 인수가 증가하는 순으로 한다.
💡 해결 방법
💻 코드
from math import ceil
n = int(input())
nums = [int(input()) for _ in range(n)]
for num in nums:
record = []
for x in range(2, num + 1):
target = num
ans = 0
if num % x == 0 and all((x % recordnum) != 0 for recordnum in record):
record.append(x)
while target % x == 0:
ans += 1
target = target // x
# print(record)
print(x, ans)