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 % digitSum(n) == 0
(and digitSum(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
n
Digit sum
n % sum
Harshad?
18
9
0
Yes
12
3
0
Yes
11
2
1
No
7
7
0
Yes
Approach
How to Check a Harshad Number in C++
Four clear steps — sum the digits, then test divisibility.
Work with a positive value (reject n <= 0 for the standard definition).
Compute the sum of decimal digits with % 10 and / 10.
Guard against a digit sum of 0 (avoid divide-by-zero style modulus).
Return true when n % digitSum == 0.
Method
Idea
Time
Best for
Digit peel
n % 10 / n / 10 sum, then modulus
O(log n)
Interviews, no strings
String digits
Sum chars from to_string(n), then modulus
O(log n)
Readable alternate style
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
Reference
Cheat Sheet
Keep these facts handy while writing the program.
Topic
Detail
Definition
n % digitSum(n) == 0
Also called
Niven number
1–9
All are Harshad
Zero
Not used in the standard positive definition
Digit sum
Peel with % 10 and / 10
Classic check
18 → yes; 11 → no
Try it
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
Trace
Worked Walkthrough — n = 18
Sum the digits, then ask whether 18 divides evenly by that sum.
Calculation
temp = 18, sum = 0
18 % 10 = 8 → sum = 8, temp = 1
1 % 10 = 1 → sum = 9, temp = 0
digitSum = 9
18 % 9 = 0 ✓
Result: 18 is a Harshad number
Code
C++ Programs
Start with the classic digit-peel check. Then use a string digit sum when you want a more readable alternate.
Example 1 — Digit Peel
Sum digits with % 10 / / 10, then test n % sum == 0.
C++
#include <iostream>
using namespace std;
bool IsHarshad(int n)
{
if (n <= 0)
{
return false;
}
int sum = 0;
int temp = n;
while (temp > 0)
{
sum += temp % 10;
temp /= 10;
}
return sum != 0 && n % sum == 0;
}
int main()
{
int number = 18;
if (IsHarshad(number))
{
cout << number << " is a Harshad number" << endl;
}
else
{
cout << number << " is not a Harshad number" << endl;
}
return 0;
}
Output
18 is a Harshad number
How It Works
Reject non-positive n for the standard definition.
Copy n into temp so the original value stays available for the final modulus.
Peel each digit with temp % 10 and shrink with temp /= 10.
For 18: sum becomes 9, then 18 % 9 == 0.
Require sum != 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.
C++
#include <iostream>
#include <string>
using namespace std;
bool IsHarshad(int n)
{
if (n <= 0)
{
return false;
}
int sum = 0;
string s = to_string(n);
for (size_t i = 0; i < s.size(); i++)
{
sum += s[i] - '0';
}
return sum != 0 && n % sum == 0;
}
int main()
{
cout << (IsHarshad(18) ? "true" : "false") << endl;
cout << (IsHarshad(11) ? "true" : "false") << endl;
return 0;
}
Output
true
false
How It Works
Reject n <= 0 the same way as Example 1.
to_string(n) gives one character per digit.
s[i] - '0' converts a digit char into an integer 0–9.
Sum those values, then check n % sum == 0.
Same answers as digit peel — pick peel for interviews, string when readability 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.
Analysis
Time and Space Complexity
Program
Time
Extra space
Digit peel
O(log n)
O(1)
String digits
O(log n)
O(log n) for the string
Work is proportional to the number of digits. One modulus finishes the check.
Remember
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. digitSum(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.