An algorithm to find all the Armstrong numbers between the two numbers.
We will find all the Armstrong number between the two numbers in Javascript and print them.
Armstrong: When we cube each digit of the number and add, it should be equal to the given number.
Example
Input: 100 200 100 400 0 100 Output: 153 153 370 371 0 1
Implementation
- We are going to loop through all the numbers between the given two numbers.
- Then we will check if the current number is Armstrong or not and print it.
- Everything will be written in ES6.
//function to check if given number is Armstrong or not
let isArmstrong = (num) => {
let sum = 0;
//store the actual number to check later
let temp = num;
//Extract each digit of number
while(num > 0){
//get the last digit of the number
let d = parseInt(num % 10);
//find the cube
d = d ** 3;
sum = sum + d;
//reduce the number
num = parseInt(num / 10);
}
//Check if number equals to the cubed sum
return temp === sum;
}
//Function to print all the Armstrong number
let printArmstrong = (start, end) => {
//loop through given range of numbers
for(let i = start; i <= end; i++){
//If the it is Armstrong then print
if(isArmstrong(i)){
console.log(i);
}
}
}
Input: printArmstrong(0, 100); printArmstrong(100, 200); printArmstrong(300, 700); Output: 0 1 0 1 153 370 371 407
Time complexity: O(n * d). where n is the difference between the two numbers and d is the no of digits in the biggest number.
Space complexity: O(1).
Time and Space complexity
- We are going to loop through the given range of numbers that will take O(n) where n is the difference between the given numbers, Then we will be checking if the number is Armstrong or not that will take O(d) where d is the number of digits in the biggest number, so Time complexity is O(n * d).
- We are using constant space, so Space complexity is O(1).
Tim says:
You’re missing a few armstrong numbers
Prashant Yadav says:
Which?