Algorithm/Online judge

[백준] 2312번 > 수 복원하기

민철킹 2021. 3. 5. 15:33

www.acmicpc.net/problem/2312

 

2312번: 수 복원하기

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

www.acmicpc.net

문제

양의 정수 N이 주어졌을 때, 이 수를 소인수분해 한 결과를 출력하는 프로그램을 작성하시오.

입력

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

출력

각 테스트 케이스마다 각 인수와 그 인수가 곱해진 횟수를 한 줄씩 출력한다. 출력 순서는 인수가 증가하는 순으로 한다.

예제 입력 1

2

6

24

예제 출력 1

2 1

3 1

2 3

3 1

 


풀이

나누었을 때 나머지가 0일때만 count해주어서 child_list에 추가시켜줌.

만약 n이 105라면

child_list = [[2, 0], [3, 1], [4, 0], [5, 1], [6, 0], [7, 1]]이 될 것이다.

이중에서 한번도 사용하지 않은 즉 i[1]이 0인 것은 제외하고 출력

t = int(input())
for _ in range(t):
    n = int(input())
    child_list = []
    devide_num = 2
    while n != 1:
        count = 0
        while True:
            if n % devide_num == 0:
                n //= devide_num
                count += 1
            else:
                break
        child_list.append([devide_num, count])
        devide_num += 1
    for i in child_list:
        if i[1]:
            print(*i)

 

반응형

'Algorithm > Online judge' 카테고리의 다른 글

[백준] 17413번 > 단어 뒤집기 2  (0) 2021.03.06
[백준] 10844번 > 쉬운 계단 수  (0) 2021.03.06
[백준] 2644번 > 촌수계산  (0) 2021.03.05
[백준] 15663번 > N과 M (9)  (0) 2021.03.04
[백준] 15664번 > N과 M (10)  (0) 2021.03.04