Python Harshad Number Program

Beginner
5 min read
Updated: Oct 2026
2 programs
Live preview

What Is a Harshad Number?

A Harshad number (also called a Niven number) is a positive integer that is divisible by the sum of its digits.

Remember
n is Harshad  ⇔  n % digit_sum(n) == 0
                (and digit_sum(n) ≠ 0)

Example: 18
  digit sum = 1 + 8 = 9
  18 % 9 = 0  → Harshad

Example: 11
  digit sum = 1 + 1 = 2
  11 % 2 ≠ 0  → not Harshad
nDigit sumn % sumHarshad?
1890Yes
1230Yes
1121No
770Yes

How to Check a Harshad Number in Python

Four clear steps — sum the digits, then test divisibility.

  1. Work with a positive value (reject n <= 0 for the standard definition).
  2. Compute the sum of decimal digits with % 10 and // 10.
  3. Guard against a digit sum of 0 (avoid modulus by zero).
  4. Return True when n % digit_sum == 0.
MethodIdeaTimeBest for
Digit peeln % 10 / n // 10 sum, then modulusO(log n)Interviews, no strings
String digitssum(int(d) for d in str(n)), then modulusO(log n)Short, idiomatic Python

Pseudocode

Pseudocode
function IsHarshad(n):
    if n <= 0:
        return false

    sum = 0
    temp = n
    while temp > 0:
        sum = sum + (temp mod 10)
        temp = temp / 10

    if sum == 0:
        return false

    return (n mod sum) == 0

Cheat Sheet

Keep these facts handy while writing the program.

TopicDetail
Definitionn % digit_sum(n) == 0
Also calledNiven number
1–9All are Harshad
ZeroNot used in the standard positive definition
Digit sumPeel with % 10 and // 10
Classic check18 → yes; 11 → no

Live Preview

Enter a positive integer to see the digit sum and whether it is Harshad.

Positive whole numbers. Tap a chip or type a value.

Result
n = 18
Digit sum = 1 + 8 = 9
18 % 9 = 0
Verdict: HARSHAD NUMBER

Worked Walkthrough — n = 18

Sum the digits, then ask whether 18 divides evenly by that sum.

Calculation
temp = 18, total = 0

18 % 10 = 8  → total = 8,  temp = 1
1  % 10 = 1  → total = 9,  temp = 0

digit_sum = 9
18 % 9 = 0  ✓

Result: 18 is a Harshad number

Python Programs

Start with the classic digit-peel check. Then use a string digit sum when you want short, idiomatic Python.

Example 1 — Digit Peel

Sum digits with % 10 / // 10, then test n % total == 0.

python
def is_harshad(n):
    if n <= 0:
        return False

    total = 0
    temp = n
    while temp > 0:
        total += temp % 10
        temp //= 10

    return total != 0 and n % total == 0


number = 18
if is_harshad(number):
    print(f"{number} is a Harshad number")
else:
    print(f"{number} is not a Harshad number")

How It Works

  1. Reject non-positive n for the standard definition.
  2. Copy n into temp so the original value stays available for the final modulus.
  3. Peel each digit with temp % 10 and shrink with temp //= 10.
  4. For 18: total becomes 9, then 18 % 9 == 0.
  5. Require total != 0 so you never modulus by zero.

Example 2 — String Digit Sum

Convert to a string, add each digit character, then apply the same divisibility test.

python
def is_harshad(n):
    if n <= 0:
        return False

    total = sum(int(d) for d in str(n))
    return total != 0 and n % total == 0


print(is_harshad(18))  # True
print(is_harshad(11))  # False

How It Works

  1. Reject n <= 0 the same way as Example 1.
  2. str(n) gives one character per digit.
  3. int(d) converts each digit character into an integer 0–9.
  4. sum(...) adds those values, then check n % total == 0.
  5. Same answers as digit peel — pick peel for interviews, string when brevity matters.

Edge Cases & Pitfalls

Check these before calling the solution done.

1–9

Always Harshad

Digit sum equals the number itself, so the remainder is always 0.

Zero

Avoid % 0

Digit sum of 0 is 0. Guard before the modulus.

Negatives

Usually false

Standard Harshad checks use positive integers only.

Temp copy

Keep original n

Destroy a copy while summing digits; modulus needs the original value.

Time and Space Complexity

ProgramTimeExtra space
Digit peelO(log n)O(1)
String digitsO(log n)O(log n) for the string

Work is proportional to the number of digits. One modulus finishes the check.

Key Takeaways

  • Definition: n is divisible by the sum of its digits.
  • Steps: sum digits → guard sum ≠ 0 → n % sum == 0.
  • Alias: Harshad = Niven (base 10 on this page).
  • Test set: 18 yes; 12 yes; 11 no; 7 yes.

One line: sum the digits, then check whether that sum divides n.

Frequently Asked Questions

A positive integer n is Harshad (also called Niven) in base 10 when n is divisible by the sum of its decimal digits.
Yes. The digit sum of 1 is 1, and 1 % 1 == 0. Every one-digit positive integer is Harshad.
No. digit_sum(11) = 2 and 11 % 2 != 0.
For n = 0 the digit sum is 0, and modulus by zero is invalid. The usual definition uses positive n.
Harshad uses one digit sum and a divisibility check. Condensing / digital root keeps summing until a single digit remains.

Next: LCM

Find the least common multiple of two numbers.

LCM tutorial →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

9 people found this page helpful