본문 바로가기
프로그래밍/파이썬기초

완전수, 과잉수, 부족수_파이썬 기초

by 조크리 2021. 3. 22.
반응형

 

파이썬 찐초보

 

파이썬의 핵심 예제들을 살펴보며 정리하기!!

 

오늘의 목표

1. 완전수, 부족수, 과잉수 판별 프로그램 제작

2. 리스트 활용하기

3. 반복문 내 반복문 활용하기 

 

 

1. 완전수 

완전수란 자신을 뺀 자신의 약수들의 합이 자신과 같은 수를 말한다. 

 

????♨

 

예를 들면~

6을 살펴보자!

6의 약수는 1, 2, 3, 6이며 

6을 뺀 진짜 약수인 진약수는 1, 2, 3이다.

이 1,2,3을 모두 더하면 6이 되는데 이 값이 원래의 값인 6과 같다.

 

이럴때 6을 완전수라고 한다. 

 


 

그럼 사용자가 어떤 숫자를 입력했을 때 완전수인지 판별해주는 프로그램을 만들어보자!

 

아래의 코드처럼 진약수들을 모두 더해야하기 때문에 sum이라는 변수를 만들어주고

sum이 number와 같은지 확인하는 절차를 거친다. 

number = int(input("숫자를 입력하세요 : "))

sum = 0

for i in range(1, number):
  if (number % i == 0):
    sum += i

if (number == sum):
  print("%d는 완전수이다." %(number))
else:
  print("%d는 완전수가 아니다."%(number))

  

 


 

2. 어떤 수 까지 중에 완전수 판별하기

 

사용자가 어떤 수를 입력하면 그 수 까지 중에 완전수가 있는지 판별해주는 프로그램을 작성해보자. 

#어떤 수 까지 중에 완전수 판별
number = int(input("숫자를 입력하세요 : "))
#for문 안에 for문
for x in range(2, number +1):
  sum = 0 
  for i in range(1, x):
    if (x % i == 0):
      sum += i 
  if (x == sum):
    print("%d는 완전수이다."%(x))
  else:
    print("%d는 완전수가 아니다."%(x))

 

사실 완전수는 매우 드물다.

6, 28, 496, 8128 정도이다. 

 

 


3. 어떤 수 까지 중에 부족수 판별하기

 

완전수와 달리 부족수는 진약수들의 합이 해당 숫자보다 작은 수를 말한다. 

 

???

 

역시 예제를 봐야한다.

 

8을 보자면

8의 약수는 1,2,4,8이고 진약수는 1,2,4이다. 1,2,4를 모두 더하면 7이고 7은 8보다 작다~!!

그래서 8을 부족수이다. 

 

#부족수 
number = int(input("숫자를 입력하세요 : "))
Data = []

for x in range(2, number +1):
  sum = 0 
  for i in range(1, x):
    if (x % i == 0):
      sum += i 
  if (x > sum):
    Data.append(x)

print("부족수는", Data)

 


 

4. 어떤 수 까지 중에 과잉수 판별하기

 

과잉수는 부족수와는 반대로 sum이 원래 수보다 큰 것을 의미한다. 

앞의 부족수 코드에서 부등호만 바꾸어주면 끝~!

 

#과잉수 
number = int(input("숫자를 입력하세요 : "))
Data = []

for x in range(2, number +1):
  sum = 0 
  for i in range(1, x):
    if (x % i == 0):
      sum += i 
  if (x < sum):
    Data.append(x)

print("과잉수는", Data)

 

 


 

5. 과잉수, 부족수, 완전수를 한 번에 확인하기

 

이번에는 과잉수, 부족수, 완전수에 대한 각각의 리스트를 만들어 확인해보자!

지난 글에서 빈 리스트를 만든뒤 append 함수를 이용해 값들을 넣었는데

그 코드를 활용해보자!

 

#과잉수, 부족수, 완전수
number = int(input("숫자를 입력하세요 : "))
Data1 = []
Data2 = []
Data3 = []

for x in range(2, number +1):
  sum = 0 
  for i in range(1, x):
    if (x % i == 0):
      sum += i 
  if (x < sum):
    Data1.append(x)
  elif (x > sum):
    Data2.append(x)
  else:
    Data3.append(x)

print("과잉수는", Data1)
print("부족수는", Data2)
print("완전수는", Data3)

 

 

 


마지막으로 과제를 해결해보자~!

 

 

리스트를 이용하여 1부터 1000사이의 숫자들의 약수의 개수를 출력하는 프로그램을 만들어보자!

 

반응형