- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Finding out the Harshad number JavaScript
Harshad numbers are those numbers which are exactly divisible by the sum of their digits. Like the number 126, it is completely divisible by 1+2+6 = 9.
All single digit numbers are harshad numbers.
Harshad numbers often exist in consecutive clusters like [1,2,3,4,5,6,7,8,9,10], [110,111,112], [1010, 1011, 1012].
Our job is to write a function that takes in a Number as input checks whether it’s a harshad number or not, if not then returns -1 otherwise it returns the length of streak of consecutive harshad cluster.
For example −
harshadNum(1014) = harshadNum(1015) = harshadNum(1016) = harshadNum(1017) = 4 harshadNum(1) = 10 harshadNum(12) = 1 harshadNum(23) = -1
Let’s break this problem into two major functions,
isHarshad() → takes in a number num and returns a boolean depending upon whether the number is harshad or not.
harshadNum() → main function that takes in the actual number, makes call to isHarshad() at various points and returns the length of streak.
Coding the isHarshad function() −
const isHarshad = (num) => { let sum = 0, temp = num; while(temp){ sum += temp % 10; temp = Math.floor(temp/10); } return num % sum === 0; }
Pretty simple iterative function that returns a boolean
Now let’s code the harshadNum() function −
const harshadNum = (number) => { //if the input is not harshad return -1 if(!isHarshad(number)){ return -1; } let streak = 1, prev = number-1, next = number+1; //check preceding streak while(isHarshad(prev) && prev > 0){ streak++; prev--; } //check succeeding streak while(isHarshad(next)){ streak++; next++; } return streak; }; console.log(harshadNum(1014));
Understanding the above code −
Check whether the input is harshad or not, if not stop the function and return -1;
Run one loop backwards, one forwards while we keep getting harshad numbers,simultaneously keep updating the streak
Lastly return the streak
Following is the complete code −
Example
const isHarshad = (num) => { let sum = 0, temp = num; while(temp){ sum += temp % 10; temp = Math.floor(temp/10); } return num % sum === 0; } const harshadNum = (number) => { //if the input is not harshad return -1 if(!isHarshad(number)){ return -1; } let streak = 1, prev = number-1, next = number+1; //check preceding streak while(isHarshad(prev) && prev > 0){ streak++; prev--; } //check succeeding streak while(isHarshad(next)){ streak++; next++; } return streak; }; console.log(harshadNum(1014));
Output
Output for this code in the console will be −
4
- Related Articles
- Finding the only out of sequence number from an array using JavaScript
- JavaScript Recursion finding the smallest number?
- Python program to determine whether the given number is a Harshad Number
- Finding the smallest fitting number in JavaScript
- Finding the nth prime number in JavaScript
- Finding Gapful number in JavaScript
- Finding nearest Gapful number in JavaScript
- Finding persistence of number in JavaScript
- Finding the largest 5 digit number within the input number using JavaScript
- JavaScript Finding the third maximum number in an array
- Finding the number of words in a string JavaScript
- Finding the nth missing number from an array JavaScript
- Finding whether a number is triangular number in JavaScript
- Finding number plate based on registration number in JavaScript
- Finding unlike number in an array - JavaScript
