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==1: print ("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 |
댓글