## Python program to check if a number is a disarium number or not:

In this post, we will learn how to check if a number is a *disarium* number or not using Python. This program will take one number as input from the user and print one message i.e. if it is a *disarium* number or not.

Before we start to write the program, let’s understand what is a *disarium* number and the algorithm that we will use.

### What is a Disarium number:

A number is called a *disarium* number if the *sum* of the digits raised to the power of their positions is equal to the number itself.

The position starts from *1*, i.e. the position of the leftmost digit is *1*, the second digit from the left is *2* etc.

For example, *175* is a disarium number. Because, if we calculate the sum of the digits raised to the power of their positions, it will be *1^1 + 7^2 + 5^3*, which is *175*, i.e. the number itself.

### Method 1: By calculating the sum using a loop:

Let’s use a loop to pick the rightmost digit of the number, find the power of that number and add that value to a final sum variable. At the end of the loop, we will compare the number with the *sum*.

Let’s take a look at the program:

```
def find_sum(no, l):
sum = 0
while no > 0:
last_digit = no % 10
sum = sum + int(last_digit ** l)
l = l - 1
no = int(no/10)
return sum
given_num = int(input('Enter a number: '))
if given_num == find_sum(given_num, len(str(given_num))):
print(f'{given_num} is a Disarium number')
else:
print(f'{given_num} is not a Disarium number')
```

Here,

*find_sum*method is used to find the sum of all digits of the number raised to the power of its position.- This method takes two parameters.The number and the length of the number, i.e. the count of digits in the number.
- Inside this method, we are initializing the variable
*sum*as*0*to hold the final sum. - The
*while loop*will run until the value of*no*, is greater than*0*. Inside the loop, we are finding the last digit of the number and adding the value of last_digit ** l to*sum*. The value of*l*is decremented by*1*and the last digit of*no*is removed by dividing it by*10*. - Once the
*while loop*ends, it returns the*sum*.

- We are checking if the value of the user given number, i.e.
*given_num*is equal to the return value of*find_sum*or not. If yes, we are printing that this is a*Disarium*number. Else, we are printing that it is not a*Disarium*number.

“ If you run this program, it will print output as like below:

```
Enter a number: 89
89 is a Disarium number
Enter a number: 123
123 is not a Disarium number
```

### Method 2: Without converting the number to a string:

We can also read the user input as a string. We can iterate through the characters of the string one by one and find the sum. Let me show you the program:

```
def find_sum(no):
sum = 0
p = 1
for c in no:
sum = sum + pow(int(c), p)
p = p + 1
return sum
given_num = input('Enter a number: ')
if given_num.isdigit() == False:
print('Please enter a valid number !')
else:
if int(given_num) == find_sum(given_num):
print(f'{given_num} is a Disarium number')
else:
print(f'{given_num} is not a Disarium number')
```

Here,

- The input number is stored as a string in the
*given_num*variable. - The first
*if*statement checks if a user-input number is a valid number or not. If it is not a valid number, it prints one message to the user. Else, it finds the*sum*. - The
*find_sum*method takes only one parameter, i.e. the string value entered by the user.- The
*sum*is initialized as*0*. *p*is initialized as*1*. This is the power value.- By using the
*for loop*, we are iterating through the characters of the string one by one. - For each character, we are converting it to an integer by using the
*int()*method and we are finding the power by using the*pow*method. This value is added to the*sum*variable. - The value of
*p*is incremented by*1*after each iteration of the*for loop*.

- The
- Once the loop ends, it returns the value of
*sum*. - Based on the return value, it prints a message.

If you run this program, it will print output as like below:

### You might also like:

- Introduction to yield in Python with example
- How to delete all files in a folder older than n days using Python
- 4 ways to find the average of 10 numbers in Python
- Python program to convert a hexadecimal value to decimal
- Python string lstrip() method explanation with example
- Python rstrip() method explanation with example
- Python ticket booking program with JSON data