Armstrong Numbers between two integers - GeeksforGeeks

27 Apr, 2021
A positive integer with digits a, b, c, d... is called an Armstrong number of order n if following condition is satisfied.  
abcd... = an + bn + cn + dn +...
 
153 = 1*1*1 + 5*5*5 + 3*3*3  
    =  1 + 125 + 27
    =  153        
Therefore, 153 is an Armstrong number.
Examples:  
Input : 100 400
Output :153 370 371
Explanation : 100 and 400 are given 
two integers.(interval)
  153 = 1*1*1 + 5*5*5 + 3*3*3 
      = 1 + 125 + 27
      =  153  
  370 = 3*3*3 + 7*7*7 + 0
      = 27 + 343 
      = 370
  371 = 3*3*3 + 7*7*7 + 1*1*1
      = 27 + 343 +1
      = 371
 
The approach implemented below is simple. We traverse through all numbers in given range. For every number, we first count number of digits in it. Let the number of digits in current number be n. Them we find sum of n-th power of all digits. If sum is equal to i, we print the number.  
C++
Java
Python
C#
PHP
Javascript
// CPP program to find Armstrong numbers in a range#include <bits/stdc++.h>using namespace std; // Prints Armstrong Numbers in given rangevoid findArmstrong(int low, int high){    for (int i = low+1; i < high; ++i) {         // number of digits calculation        int x = i;        int n = 0;        while (x != 0) {            x /= 10;            ++n;        }         // compute sum of nth power of        // its digits        int pow_sum = 0;        x = i;        while (x != 0) {            int digit = x % 10;            pow_sum += pow(digit, n);            x /= 10;        }         // checks if number i is equal to the        // sum of nth power of its digits        if (pow_sum == i)            cout << i << " ";        }} // Driver codeint main(){    int num1 = 100;    int num2 = 400;    findArmstrong(num1, num2);    cout << '\n';    return 0;}
// JAVA program to find Armstrong// numbers in a rangeimport java.io.*;import java.math.*; class GFG {         // Prints Armstrong Numbers in given range    static void findArmstrong(int low, int high)    {        for (int i = low + 1; i < high; ++i) {                  // number of digits calculation            int x = i;            int n = 0;            while (x != 0) {                x /= 10;                ++n;            }                  // compute sum of nth power of            // its digits            int pow_sum = 0;            x = i;            while (x != 0) {                int digit = x % 10;                pow_sum += Math.pow(digit, n);                x /= 10;            }                  // checks if number i is equal            // to the sum of nth power of            // its digits            if (pow_sum == i)                System.out.print(i + " ");            }    }          // Driver code    public static void main(String args[])    {        int num1 = 100;        int num2 = 400;        findArmstrong(num1, num2);        System.out.println();    }} /*This code is contributed by Nikita Tiwari.*/
# PYTHON program to find Armstrong# numbers in a rangeimport math # Prints Armstrong Numbers in given rangedef findArmstrong(low, high) :         for i in range(low + 1, high) :                 # number of digits calculation        x = i        n = 0        while (x != 0) :            x = x / 10            n = n + 1                     # compute sum of nth power of        pow_sum = 0        x = i        while (x != 0) :            digit = x % 10            pow_sum = pow_sum + math.pow(digit, n)            x = x / 10                     # checks if number i is equal to        # the sum of nth power of its digits        if (pow_sum == i) :            print(str(i) + " "), # Driver codenum1 = 100num2 = 400findArmstrong(num1, num2)print("") # This code is contributed by Nikita Tiwari.
// C# program to find Armstrong// numbers in a rangeusing System; class GFG {     // Prints Armstrong Numbers in given range    static void findArmstrong(int low, int high)    {        for (int i = low + 1; i < high; ++i) {             // number of digits calculation            int x = i;            int n = 0;            while (x != 0) {                x /= 10;                ++n;            }             // compute sum of nth power of            // its digits            int pow_sum = 0;            x = i;            while (x != 0) {                int digit = x % 10;                pow_sum += (int)Math.Pow(digit, n);                x /= 10;            }             // checks if number i is equal            // to the sum of nth power of            // its digits            if (pow_sum == i)                Console.Write(i + " ");        }    }     // Driver code    public static void Main()    {        int num1 = 100;        int num2 = 400;        findArmstrong(num1, num2);        Console.WriteLine();    }} /*This code is contributed by vt_m.*/
<?php// PHP program to find// Armstrong numbers// in a range // Prints Armstrong// Numbers in given rangefunction findArmstrong($low, $high){    for ($i = $low + 1;         $i < $high; ++$i)    {         // number of digits        // calculation        $x = $i;        $n = 0;        while ($x != 0)        {            $x = (int)($x / 10);            ++$n;        }         // compute sum of nth        // power of its digits        $pow_sum = 0;        $x = $i;        while ($x != 0)        {            $digit = $x % 10;            $pow_sum += (int)(pow($digit, $n));            $x = (int)($x / 10);        }         // checks if number i is        // equal to the sum of        // nth power of its digits        if ($pow_sum == $i)            echo $i . " ";        }} // Driver code$num1 = 100;$num2 = 400;findArmstrong($num1, $num2); // This code is contributed by mits?>
<script>    // Javascript program to find// Armstrong numbers// in a range   // Prints Armstrong// Numbers in given rangefunction findArmstrong(low, high){    for (let i = low + 1;         i < high; ++i)    {           // number of digits        // calculation        let x = i;        let n = 0;        while (x != 0)        {            x = parseInt(x / 10);            ++n;        }           // compute sum of nth        // power of its digits        let pow_sum = 0;        x = i;        while (x != 0)        {            let digit = x % 10;            pow_sum += parseInt(Math.pow(digit, n));            x = parseInt(x / 10);        }           // checks if number i is        // equal to the sum of        // nth power of its digits        if (pow_sum == i)            document.write(i + " ");         }}   // Driver codelet num1 = 100;let num2 = 400;findArmstrong(num1, num2);   // This code is contributed by _saurabh_jaiswal</script>
Output:  
153 370 371
This article is contributed by Aditya Ranjan. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
Mithun Kumar
_saurabh_jaiswal
series
Mathematical
Mathematical
series
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Merge two sorted arrays
Modulo Operator (%) in C/C++ with Examples
Prime Numbers
Program to find GCD or HCF of two numbers
Print all possible combinations of r elements in a given array of size n
Sieve of Eratosthenes
Operators in C / C++
The Knight's tour problem | Backtracking-1
Program for factorial of a number
Find minimum number of coins that make a given value