코딩

[BOJ] 2312 수 복원하기 Python

척척석사아님 2024. 1. 4. 15:14
728x90
import math
from collections import defaultdict
#에라토스테네스 체 응용
num = [i for i in range (0,100001)]
num[0] = 1
prime = []
for i in range (2,int(math.sqrt(100001))+ 1):
    if num[i] == i:
        for j in range (i,100001,i):
            if num[j] == j:
                num[j] = i

N = int(input())
for i in range (0,N):
    x = int(input()) #소인수분해 되는 숫자
    d = defaultdict(int)
    while num[x] != 1:
        d[num[x]] += 1
        x //= num[x]
    d_key = list(d.keys())
    for j in range (0,len((d_key))):
        print(d_key[j], d[d_key[j]])

 

에라토스테네스 체의 응용으로 간단하게 풀 수 있습니다.

'코딩' 카테고리의 다른 글

[BOJ] 10026 적록색약 Python  (1) 2024.01.05
[BOJ] 7569 토마토 Python  (0) 2024.01.05
[BOJ] 1334 다음 팰린드롬 수  (0) 2023.12.31
[BOJ] 11055 가장 큰 증가하는 부분 수열  (1) 2023.12.17
[Atcoder] ABC 333 D - Erase Leaves  (1) 2023.12.17