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__