본문 바로가기
python-algorithm

백준 6975 Deficient, Perfect, and Abundant

by 무적김두칠 2021. 11. 12.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import math
n=int(input())
for i in range(n):
    if i !=0 : print()
    tmp=1
    number=int(input())
    cnt=math.ceil(math.sqrt(number))
    if number==1print ("1 is a deficient number.")
    else:
        for j in range(2,cnt):
            if number%j==0:
                tmp+=j+ number//j
        if tmp<number:
            print("%d is a deficient number."%number)
        if tmp==number:
            print("%d is a perfect number."%number)
        if tmp>number:
            print("%d is an abundant number."%number)
cs

약수의 합으로 분류하는 문제인데
LIne 7같이 한 이유는 
1부터 입력받은 숫자까지 전부 반복할 필요 없이
그 Square Root값+1(올림) 만큼까지만 반복해도 약수를 전부 체크할 수 있습니다.

Prime Number 관련 문제를 많이 푸신 분들은 아실거에요
원리는 수학적 내용입니다.

반응형

'python-algorithm' 카테고리의 다른 글

백준 13225 Divisors  (0) 2021.11.19
백준 9288 More Dice  (0) 2021.11.19
2167 2차원 배열의 합  (0) 2021.11.12
백준 2738 행렬 덧셈  (0) 2021.11.12
Hacker rank Print the Elements of a Linked List  (0) 2021.11.12

댓글