A number is said to be a niven number or harshad number if the number is divisible by the sum of the digits of the number.
For example, if the number is 18, the sum of the digits is 1+8=9 and the number ’18’ is divisible by 9. Therefore, 18 is a niven number.
If the number is 16, the sum of the digits is 1+6=7 and the number ‘16’ is not divisible by 7. Therefore, 16 is not a niven number.
For this program, a number is taken as input. Then the sum of the digits is calculated. If the number is divisible by the sum of the digits, then the number is a niven number or not.
INPUT: A number
OUTPUT: Whether a number is a niven number or not.
PROCESS:
Step 1: [Taking the input]
Read n [the number to check]
Step 2: [Checking for niven number]
Set d<-0
Set tmp<-n
[Adding the digits of the number]
While tmp>0 repeat
Set d<-d+(tmp mod 10)
Set tmp<-tmp/10
[End of ‘while’ loop]
[Checking for niven number]
If n mod d=0 then
Print "The number is a niven number"
Else
Print "The number is not a niven number"
[End of ‘if-else’]
Step 3: Stop.
while(tmp>0) --------------------------------------O(n) [‘n’ is the number of digits]
{ d=d+(tmp%10);
tmp=tmp/10; }
//checking for niven number
if(n%d==0)------------------------------------------O(1)
printf("The number is a niven number");
else---------------------------------------------------O(1)
printf("The number is not a niven number");
The time complexity to check whether a number is a niven number or not is O(n) where ‘n’ is the number of digits of the input number.
The space complexity of this program is O(1) as it requires a constant memory space to execute for any given input.