[Python] 알고리즘/Silver

[2312] 수 복원하기 (Python)

-Becca- 2021. 11. 20. 14:04

[문제]

https://www.acmicpc.net/problem/2312

 

2312번: 수 복원하기

첫째 줄에 테스트 케이스의 수가 주어진다. 각 테스트 케이스마다 양의 정수 N (2 ≤ N ≤ 100,000)이 주어진다.

www.acmicpc.net


알고리즘 분류는 수학, 정수론, 소수 판정, 에라토스테네스의 체 입니다.

파이썬의 dictionary에는 key, value 형태로 들어가므로 인수와 인수가 곱해진 수를 넣어야 합니다.


[코드]

import sys


def prime(n):
    dt = dict()
    p = 2
    while p <= n:
        if n % p == 0:
            dt[p] = dt.get(p, 0) + 1
            n /= p
        else:
            p += 1

    for k, v in dt.items():
        print(k, v)


T = int(sys.stdin.readline())
for i in range(T):
    N = int(sys.stdin.readline())
    prime(N)