Python program to check if a number is a Niven or Harshad number

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: