1부터 100 사이의 모든 Disarium 수(디사리움 수)를 출력해야 하는 경우, 1부터 100까지 간단한 반복문을 실행하면서 각 숫자의 자릿수 길이를 계산하고, 각 자릿수에 해당 자리의 거듭제곱을 곱한 값을 더하면 됩니다.
계산된 합이 원래 숫자와 같다면 그 숫자는 Disarium 수로 판별됩니다.
Disarium 수란?
Disarium 수는 각 자릿수를 자신의 자리 위치만큼 거듭제곱한 값들의 합이 원래 숫자와 동일한 수를 의미합니다. 예를 들어 89는 8¹ + 9² = 8 + 81 = 89가 되므로 Disarium 수입니다.
아래는 이를 구현한 예제 코드입니다.
예제 코드
def length_calculation(my_val):
len_val = 0
while(my_val != 0):
len_val = len_val + 1
my_val = my_val//10
return len_val
def digit_sum(my_num):
remaining = sum_val = 0
len_fun = length_calculation(my_num)
while(my_num > 0):
remaining = my_num%10
sum_val = sum_val + (remaining**len_fun)
my_num = my_num//10
len_fun = len_fun - 1
return sum_val
ini_result = 0
print("The disarium numbers between 1 and 100 are : ")
for i in range(1, 101):
ini_result = digit_sum(i)
if(ini_result == i):
print(i)실행 결과
The disarium numbers between 1 and 100 are : 1 2 3 4 5 6 7 8 9 89
코드 설명
- 두 개의 함수가 정의됩니다. 하나는 숫자의 자릿수 개수를 구하는 함수이고, 다른 하나는 각 자릿수에 자리 위치만큼 거듭제곱한 값을 더하는 함수입니다.
- 초기 결과값은 0으로 설정합니다.
- 1부터 101 미만(즉, 1~100)까지 반복문을 돌며, 각 숫자에 대해 자릿수 거듭제곱의 합을 계산합니다.
- 계산된 합이 원래 숫자와 같으면 그 숫자를 Disarium 수로 판별하여 출력합니다.
- 결과적으로 1부터 9까지의 한 자리 숫자와 89가 콘솔에 출력됩니다.