When it is required to determine if a given number is a Harshad number or not, a simple loop and ‘%’ operator, ‘+’ operator and ‘//’ operators can be used.
A Harshad number is also known as a Niven number. It is a number whoses base is an integer that can be divided by the sum of its digits when it is written as that base value.
Below is a demonstration for the same −
Example
my_num = 134 remaining = sum_val = 0 print("A copy of the number to be checked is being made...") my_num_copy = my_num; while(my_num > 0): remaining = my_num%10; sum_val = sum_val + remaining; my_num = my_num//10; if(my_num_copy % sum_val == 0): print(str(my_num_copy) + " is a Harshad number"); else: print(str(my_num_copy) + " isn't a Harshad number");
Output
A copy of the number to be checked is being made... 134 isn't a Harshad number
Explanation
- A number is defined.
- Another sum variable is assigned the value 0.
- The number is checked to be greater than 0, and modulus operation is performed on it.
- This result is added to the ‘sum’ and the number is again floor divided by 10.
- If the remainder when the number and sum are divided is 0, it is considered as a Harshad number.
- Otherwise, it is not considered as a Harshad number.