## Python program to check if a given number is a Niven or Harshad number or not:

A number is called a *Niven* or *Harshad* number if the number is divisible by the *sum* of its digits. For example, *152* is a Niven number because the sum of its digits, *1 + 5 + 2 = 8* can divide *152*. Similarly, *156* is also a Harshad or Niven number.

In this post, we will write one program in *Python* to check if a number is a *Niven* number or not. It will take the number as input from the user.

### Algorithm to check for a Niven number:

We can use the below algorithm to check for a Niven number:

- Take the number as an input from the user.
- Find the sum of digits of the number.
- Use one while loop to find the sum of digits of the number. This loop will run until the number is greater than
*0*. - On each iteration, find the last digit of the number. Add this number to a
*sum*variable. The*sum*variable should be initialized as*0*at the start of the program. - Remove the last digit of the number.
- Once the while loop ends, the
*sum*will hold the sum of the digits of the number.

- Use one while loop to find the sum of digits of the number. This loop will run until the number is greater than
- Check if the sum can divide the number or not.

### Method 1: Python program to check if a number is a Niven number or not:

Let’s write down the *python program* that checks for a *Niven* or *Harshad* number:

```
no = int(input("Enter the number: "))
sum = 0
copy_no = no
while (copy_no):
last_digit = copy_no % 10
sum = sum + last_digit
copy_no //= 10
if no % sum == 0:
print(f'{no} is a Niven number')
else:
print(f'{no} is not a Niven number')
```

Here,

- The number is entered by the user and it is assigned to the
*no*variable. - It created one variable
*sum*to store the sum of all digits of the number. It is initialized as*0*. We also created another variable*copy_no*to create a copy of the number. - The while loop is used to find the sum of all digits of the number. This loop runs until the
*copy_no*is greater than zero.- On each step, it finds the last digit of the number and adds it to the
*sum*variable. It also removes the last digit of the number.

- On each step, it finds the last digit of the number and adds it to the
- Once the while loop ends, we are checking if the number can be divided by the sum of digits of the number or not. We are using the modulo operator,
*%*to check the remainder. If it is equal to zero, or if the sum of digits of the number can divide the number, it is a Niven number. Else, it is not an Niven or Harshad number.

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

```
Enter the number: 123
123 is not a Niven number
Enter the number: 63
63 is a Niven number
```

### Method 2: Python program to check if a number is a Niven number or not by using a separate method:

Let’s use a separate method to find if a number is *Niven* or *Harshad*. We will call this method and this method will return one boolean value, *True* or *False*.

```
def is_niven(no):
sum = 0
copy_no = no
while (copy_no):
last_digit = copy_no % 10
sum = sum + last_digit
copy_no //= 10
return no % sum == 0
if __name__ == "__main__":
no = int(input("Enter the number: "))
if is_niven(no):
print(f'{no} is a Niven number')
else:
print(f'{no} is not a Niven number')
```

So, we created a new method called *is_niven* to check if a number is *Niven* or not. It takes one number as its parameter and returns one boolean value. It will print similar output.

```
Enter the number: 63
63 is a Niven number
Enter the number: 64
64 is not a Niven number
```

### You might also like:

- Python string islower method explanation with example
- Python program to check if a number is divisible by another number or not
- Python program to check if a number is duck number or not
- Python program to convert celsius to Fahrenheit and vice versa
- Python program to check if a number is a magic number or not
- Difference between random.sample() vs random.choice() in Python
- Python program to check for Moran numbers
- Python program to check if a number is a perfect number or not
- 3 different Python programs to remove the first character of string
- Python assert statement explanation with examples
- 3 different Python programs to get a string after a substring
- Python example to print the function name as string with
`__name__`

and`__qualname__`