Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

주어진 숫자가 디사리움(Disarium) 수인지 확인하는 파이썬 프로그램


주어진 숫자가 디사리움(Disarium) 수인지 확인하려면, 각 자릿수를 해당 자리의 위치만큼 거듭제곱한 값들의 합을 계산해야 합니다. 이를 위해서는 먼저 숫자가 몇 자릿수인지 구하는 과정이 필요합니다.

디사리움 수란 각 자릿수를 그 자리 위치만큼 거듭제곱한 값의 합이 원래 숫자 자신과 같은 수를 의미합니다. 예를 들어 135는 11 + 32 + 53 = 1 + 9 + 125 = 135이므로 디사리움 수에 해당합니다.

아래는 이를 확인하는 파이썬 코드 예시입니다.

예제 코드

def length_calculation(num_val):
    length = 0
    while(num_val != 0):
        length = length + 1
        num_val = num_val//10
    return length
my_num = 192
remaining = sum_val = 0
len_val = length_calculation(my_num)
print("A copy of the original number is being made...")
num_val = my_num
while(my_num > 0):
    remaining = my_num%10
    sum_val = sum_val + int(remaining**len_val)
    my_num = my_num//10
    len_val = len_val - 1
if(sum_val == num_val):
    print(str(num_val) + " is a disarium number !")
else:
    print(str(num_val) + " isn't a disarium number")

실행 결과

A copy of the original number is being made...
192 isn't a disarium number

코드 설명

  • length_calculation이라는 이름의 함수를 정의하여 숫자의 자릿수 개수를 계산합니다.
  • 이 함수는 숫자를 10으로 나눈 몫(정수 나눗셈)을 반복적으로 구하면서 자릿수를 세고, 최종 자릿수를 반환합니다.
  • 확인할 숫자 192를 정의하고, 원래 숫자의 복사본을 미리 만들어 둡니다.
  • 나머지 연산자(%)를 사용해 가장 뒤쪽 자릿수를 하나씩 추출하고, 그 자릿수를 현재 위치 지수로 거듭제곱한 값을 합계 변수에 더합니다.
  • 자릿수를 하나 처리할 때마다 지수(len_val)를 1씩 감소시켜 왼쪽 자리로 이동합니다.
  • 모든 자릿수를 처리한 후, 계산된 합계가 원래 숫자와 같은지 비교합니다.
  • 두 값이 같으면 디사리움 수이고, 그렇지 않으면 디사리움 수가 아닙니다.

참고로 1부터 9까지의 한 자리 숫자는 모두 디사리움 수이며, 89, 135, 175, 518, 598 등도 대표적인 디사리움 수입니다. 반면 192는 11 + 92 + 23 = 90으로 원래 숫자와 다르기 때문에 디사리움 수가 아닙니다.