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.
 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.
 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__