w3resource

Python Exercises: Check if a number is a Harshad number or not

Python Math: Exercise-90 with Solution

In recreational mathematics, a Harshad number in a given number base, is an integer that is divisible by the sum of its digits when written in that base.
Example: The number 18 is a Harshad number in base 10, because the sum of the digits 1 and 8 is 9 (1 + 8 = 9), and 18 is divisible by 9.
The number 19 is not a harshad number in base 10, because the sum of the digits 1 and 9 is 10 (1 + 9 = 10), and 19 is not divisible by 10.
Harshad numbers in base 10 form the sequence:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 18, 20, 21, 24, 27, 30, 36, 40, 42, 45, 48, 50, 54, 60, 63, 70, 72, 80, 81, 84, 90, 100, 102, 108, 110, 111, 112, 114, 117, 120, 126, 132, 133, 135, 140, 144, 150, 152, 153, 156, 162, 171, 180, 190, 192, 195, 198, 200, ....

Write a Python program to check if a given number is a Harshad number or not. Return True if the number is Harshad otherwise False.

Sample Data:
(666) -> True
(11) -> False
(-144) -> None
(200) -> True

Sample Solution-1:

Python Code:

def test(n):
    if (n>0):
        a = 0
        b = n
        while b > 0:
            a = a +  b % 10
            b = b // 10
        return not n % a
     
n = 666
print("Original number:", n)
print("Check the said number is a Harshad number or not!")
print(test(n))
n = 11
print("\nOriginal number:", n)
print("Check the said number is a Harshad number or not!")
print(test(n))
n = -144
print("\nOriginal number:", n)
print("Check the said number is a Harshad number or not!")
print(test(n))
n = 200
print("\nOriginal number:", n)
print("Check the said number is a Harshad number or not!")
print(test(n))

Sample Output:

Original number: 666
Check the said number is a Harshad number or not!
True

Original number: 11
Check the said number is a Harshad number or not!
False

Original number: -144
Check the said number is a Harshad number or not!
None

Original number: 200
Check the said number is a Harshad number or not!
True

Flowchart:

Flowchart: Check whether a given number is a Disarium number or unhappy number.

Sample Solution-2:

Python Code:

def test(n):
    if (n>0):
        t = sum(map(int, str(n)))
        return not n % t     
n = 666
print("Original number:", n)
print("Check the said number is a Harshad number or not!")
print(test(n))
n = 11
print("\nOriginal number:", n)
print("Check the said number is a Harshad number or not!")
print(test(n))
n = -144
print("\nOriginal number:", n)
print("Check the said number is a Harshad number or not!")
print(test(n))
n = 200
print("\nOriginal number:", n)
print("Check the said number is a Harshad number or not!")
print(test(n))

Sample Output:

Original number: 666
Check the said number is a Harshad number or not!
True

Original number: 11
Check the said number is a Harshad number or not!
False

Original number: -144
Check the said number is a Harshad number or not!
None

Original number: 200
Check the said number is a Harshad number or not!
True

Flowchart:

Flowchart: Check whether a given number is a Disarium number or unhappy number.

Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous Python Exercise: Check a number is a repdigit number or not.
Next Python Exercise: Next number containing only distinct digits.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://198.211.115.131/python-exercises/math/python-math-exercise-90.php