Program for Armstrong Numbers

22 Jun, 2022
Given a number x, determine whether the given number is Armstrong number or not. 
A positive integer of n digits is called an Armstrong number of order n (order is number of digits) if. 
abcd... = pow(a,n) + pow(b,n) + pow(c,n) + pow(d,n) + .... 
Example: 
Input : 153
Chapters
descriptions off, selected
captions settings, opens captions settings dialog
captions off, selected
English
This is a modal window.
Beginning of dialog window. Escape will cancel and close the window.
End of dialog window.
Output : Yes
153 is an Armstrong number.
1*1*1 + 5*5*5 + 3*3*3 = 153
Input : 120
Output : No
120 is not a Armstrong number.
1*1*1 + 2*2*2 + 0*0*0 = 9
Input : 1253
Output : No
1253 is not a Armstrong Number
1*1*1*1 + 2*2*2*2 + 5*5*5*5 + 3*3*3*3 = 723
Input : 1634
Output : Yes
1*1*1*1 + 6*6*6*6 + 3*3*3*3 + 4*4*4*4 = 1634
Approach: The idea is to first count number digits (or find order). Let the number of digits be n. For every digit r in input number x, compute rn. If sum of all such values is equal to n, then return true, else false.
C++
C
Java
Python
Python3
C#
Javascript
// C++ program to determine whether the number is// Armstrong number or not#include <bits/stdc++.h>using namespace std; /* Function to calculate x raised to the power y */int power(int x, unsigned int y){    if (y == 0)        return 1;    if (y % 2 == 0)        return power(x, y / 2) * power(x, y / 2);    return x * power(x, y / 2) * power(x, y / 2);} /* Function to calculate order of the number */int order(int x){    int n = 0;    while (x) {        n++;        x = x / 10;    }    return n;} // Function to check whether the given number is// Armstrong number or notbool isArmstrong(int x){    // Calling order function    int n = order(x);    int temp = x, sum = 0;    while (temp) {        int r = temp % 10;        sum += power(r, n);        temp = temp / 10;    }     // If satisfies Armstrong condition    return (sum == x);} // Driver Programint main(){    int x = 153;    cout << boolalpha << isArmstrong(x) << endl;    x = 1253;    cout << boolalpha << isArmstrong(x) << endl;    return 0;}
// C program to find Armstrong number #include <stdio.h> /* Function to calculate x raised to the power y */int power(int x, unsigned int y){    if (y == 0)        return 1;    if (y % 2 == 0)        return power(x, y / 2) * power(x, y / 2);    return x * power(x, y / 2) * power(x, y / 2);} /* Function to calculate order of the number */int order(int x){    int n = 0;    while (x) {        n++;        x = x / 10;    }    return n;} // Function to check whether the given number is// Armstrong number or notint isArmstrong(int x){    // Calling order function    int n = order(x);    int temp = x, sum = 0;    while (temp) {        int r = temp % 10;        sum += power(r, n);        temp = temp / 10;    }     // If satisfies Armstrong condition    if (sum == x)        return 1;    else        return 0;} // Driver Programint main(){    int x = 153;    if (isArmstrong(x) == 1)        printf("True\n");    else        printf("False\n");     x = 1253;    if (isArmstrong(x) == 1)        printf("True\n");    else        printf("False\n");     return 0;}
// Java program to determine whether the number is// Armstrong number or notpublic class Armstrong {    /* Function to calculate x raised to the       power y */    int power(int x, long y)    {        if (y == 0)            return 1;        if (y % 2 == 0)            return power(x, y / 2) * power(x, y / 2);        return x * power(x, y / 2) * power(x, y / 2);    }     /* Function to calculate order of the number */    int order(int x)    {        int n = 0;        while (x != 0) {            n++;            x = x / 10;        }        return n;    }     // Function to check whether the given number is    // Armstrong number or not    boolean isArmstrong(int x)    {        // Calling order function        int n = order(x);        int temp = x, sum = 0;        while (temp != 0) {            int r = temp % 10;            sum = sum + power(r, n);            temp = temp / 10;        }         // If satisfies Armstrong condition        return (sum == x);    }     // Driver Program    public static void main(String[] args)    {        Armstrong ob = new Armstrong();        int x = 153;        System.out.println(ob.isArmstrong(x));        x = 1253;        System.out.println(ob.isArmstrong(x));    }}
# Python program to determine whether the number is# Armstrong number or not # Function to calculate x raised to the power y  def power(x, y):    if y == 0:        return 1    if y % 2 == 0:        return power(x, y/2)*power(x, y/2)    return x*power(x, y/2)*power(x, y/2) # Function to calculate order of the number  def order(x):     # variable to store of the number    n = 0    while (x != 0):        n = n+1        x = x/10    return n # Function to check whether the given number is# Armstrong number or not  def isArmstrong(x):    n = order(x)    temp = x    sum1 = 0    while (temp != 0):        r = temp % 10        sum1 = sum1 + power(r, n)        temp = temp/10     # If condition satisfies    return (sum1 == x)  # Driver Programx = 153print(isArmstrong(x))x = 1253print(isArmstrong(x))
# python3 >= 3.6 for typehint support# This example avoids the complexity of ordering# through type conversions & string manipulation  def isArmstrong(val: int) -> bool:    """val will be tested to see if its an Armstrong number.    Arguments:        val {int} -- positive integer only.    Returns:        bool -- true is /false isn't    """     # break the int into its respective digits    parts = [int(_) for _ in str(val)]     # begin test.    counter = 0    for _ in parts:        counter += _**3    return (counter == val)  # Check Armstrong numberprint(isArmstrong(153)) print(isArmstrong(1253))
// C# program to determine whether the// number is Armstrong number or notusing System; public class GFG {     // Function to calculate x raised    // to the power y    int power(int x, long y)    {        if (y == 0)            return 1;        if (y % 2 == 0)            return power(x, y / 2) * power(x, y / 2);         return x * power(x, y / 2) * power(x, y / 2);    }     // Function to calculate    // order of the number    int order(int x)    {        int n = 0;        while (x != 0) {            n++;            x = x / 10;        }        return n;    }     // Function to check whether the    // given number is Armstrong number    // or not    bool isArmstrong(int x)    {         // Calling order function        int n = order(x);        int temp = x, sum = 0;        while (temp != 0) {            int r = temp % 10;            sum = sum + power(r, n);            temp = temp / 10;        }         // If satisfies Armstrong condition        return (sum == x);    }     // Driver Code    public static void Main()    {        GFG ob = new GFG();        int x = 153;        Console.WriteLine(ob.isArmstrong(x));        x = 1253;        Console.WriteLine(ob.isArmstrong(x));    }} // This code is contributed by Nitin Mittal.
<script>     // JavaScript program to determine whether the    // number is Armstrong number or not         // Function to calculate x raised    // to the power y    function power(x, y)    {        if( y == 0)            return 1;        if (y % 2 == 0)            return power(x, parseInt(y / 2, 10)) *                   power(x, parseInt(y / 2, 10));                              return x * power(x, parseInt(y / 2, 10)) *                   power(x, parseInt(y / 2, 10));    }       // Function to calculate    // order of the number    function order(x)    {        let n = 0;        while (x != 0)        {            n++;            x = parseInt(x / 10, 10);        }        return n;    }       // Function to check whether the    // given number is Armstrong number    // or not    function isArmstrong(x)    {                   // Calling order function        let n = order(x);        let temp = x, sum = 0;        while (temp != 0)        {            let r = temp % 10;            sum = sum + power(r, n);            temp = parseInt(temp / 10, 10);        }           // If satisfies Armstrong condition        return (sum == x);    }         let x = 153;    if(isArmstrong(x))    {        document.write("True" + "</br>");    }    else{        document.write("False" + "</br>");    }    x = 1253;    if(isArmstrong(x))    {        document.write("True");    }    else{        document.write("False");    } </script>
true
false
The above approach can also be implemented in a shorter way as:
C++
C
Java
#include <iostream>using namespace std; int main() {          int n = 153;        int temp = n;        int p = 0;         /*function to calculate          the sum of individual digits         */        while (n > 0) {             int rem = n % 10;            p = (p) + (rem * rem * rem);            n = n / 10;        }         /* condition to check whether           the value of P equals           to user input or not. */          if (temp == p) {            cout<<("Yes. It is Armstrong No.");        }        else {            cout<<("No. It is not an Armstrong No.");        }    return 0;} // This code is contributed by sathiyamoorthics19
#include <stdio.h> int main() {          int n = 153;        int temp = n;        int p = 0;         /*function to calculate          the sum of individual digits         */        while (n > 0) {             int rem = n % 10;            p = (p) + (rem * rem * rem);            n = n / 10;        }         /* condition to check whether           the value of P equals           to user input or not. */          if (temp == p) {            printf("Yes. It is Armstrong No.");        }        else {            printf("No. It is not an Armstrong No.");        }    return 0;} // This code is contributed by sathiyamoorthics19
// Java program to determine whether the number is// Armstrong number or not public class ArmstrongNumber {    public static void main(String[] args)    {         int n = 153;        int temp = n;        int p = 0;         /*function to calculate          the sum of individual digits         */        while (n > 0) {             int rem = n % 10;            p = (p) + (rem * rem * rem);            n = n / 10;        }         /* condition to check whether           the value of P equals           to user input or not. */        if (temp == p) {            System.out.println("Yes. It is Armstrong No.");        }        else {            System.out.println(                "No. It is not an Armstrong No.");        }    }}
Yes. It is Armstrong No.
Find nth Armstrong number 
Input  : 9
Output : 9
Input  : 10
Output : 153
C++
Java
Python3
C#
PHP
Javascript
C
// C++ Program to find// Nth Armstrong Number#include <bits/stdc++.h>#include <math.h>using namespace std; // Function to find Nth Armstrong Numberint NthArmstrong(int n){    int count = 0;     // upper limit from integer    for (int i = 1; i <= INT_MAX; i++) {        int num = i, rem, digit = 0, sum = 0;         // Copy the value for num in num        num = i;         // Find total digits in num        digit = (int)log10(num) + 1;         // Calculate sum of power of digits        while (num > 0) {            rem = num % 10;            sum = sum + pow(rem, digit);            num = num / 10;        }        // Check for Armstrong number        if (i == sum)            count++;        if (count == n)            return i;    }} // Driver Functionint main(){    int n = 12;    cout << NthArmstrong(n);    return 0;} // This Code is Contributed by 'jaingyayak'
// Java Program to find// Nth Armstrong Numberimport java.lang.Math; class GFG {     // Function to find Nth Armstrong Number    static int NthArmstrong(int n)    {        int count = 0;         // upper limit from integer        for (int i = 1; i <= Integer.MAX_VALUE; i++) {            int num = i, rem, digit = 0, sum = 0;             // Copy the value for num in num            num = i;             // Find total digits in num            digit = (int)Math.log10(num) + 1;             // Calculate sum of power of digits            while (num > 0) {                rem = num % 10;                sum = sum + (int)Math.pow(rem, digit);                num = num / 10;            }             // Check for Armstrong number            if (i == sum)                count++;            if (count == n)                return i;        }        return n;    }     // Driver Code    public static void main(String[] args)    {        int n = 12;        System.out.println(NthArmstrong(n));    }} // This code is contributed by Code_Mech.
# Python3 Program to find Nth Armstrong Numberimport mathimport sys # Function to find Nth Armstrong Number  def NthArmstrong(n):     count = 0     # upper limit from integer    for i in range(1, sys.maxsize):         num = i        rem = 0        digit = 0        sum = 0         # Copy the value for num in num        num = i         # Find total digits in num        digit = int(math.log10(num) + 1)         # Calculate sum of power of digits        while(num > 0):            rem = num % 10            sum = sum + pow(rem, digit)            num = num // 10         # Check for Armstrong number        if(i == sum):            count += 1        if(count == n):            return i  # Driver Coden = 12print(NthArmstrong(n)) # This code is contributed by chandan_jnu
// C# Program to find// Nth Armstrong Numberusing System; class GFG {     // Function to find Nth Armstrong Number    static int NthArmstrong(int n)    {        int count = 0;         // upper limit from integer        for (int i = 1; i <= int.MaxValue; i++) {            int num = i, rem, digit = 0, sum = 0;             // Copy the value for num in num            num = i;             // Find total digits in num            digit = (int)Math.Log10(num) + 1;             // Calculate sum of power of digits            while (num > 0) {                rem = num % 10;                sum = sum + (int)Math.Pow(rem, digit);                num = num / 10;            }             // Check for Armstrong number            if (i == sum)                count++;            if (count == n)                return i;        }        return n;    }     // Driver Code    public static void Main()    {        int n = 12;        Console.WriteLine(NthArmstrong(n));    }} // This code is contributed by Code_Mech.
<?php// PHP Program to find// Nth Armstrong Number // Function to find// Nth Armstrong Numberfunction NthArmstrong($n){    $count = 0;         // upper limit    // from integer    for($i = 1;        $i <= PHP_INT_MAX; $i++)    {        $num = $i;        $rem;        $digit = 0;        $sum = 0;                 // Copy the value        // for num in num        $num = $i;                 // Find total        // digits in num        $digit = (int) log10($num) + 1;                 // Calculate sum of        // power of digits        while($num > 0)        {            $rem = $num % 10;            $sum = $sum + pow($rem,                              $digit);            $num = (int)$num / 10;        }                 // Check for        // Armstrong number        if($i == $sum)            $count++;        if($count == $n)            return $i;    }} // Driver Code$n = 12;echo NthArmstrong($n); // This Code is Contributed// by akt_mit?>
<script> // Javascript program to find Nth Armstrong Number // Function to find Nth Armstrong Numberfunction NthArmstrong(n){    let count = 0;     // Upper limit from integer    for(let i = 1; i <= Number.MAX_VALUE; i++)    {        let num = i, rem, digit = 0, sum = 0;         // Copy the value for num in num        num = i;         // Find total digits in num        digit = parseInt(Math.log10(num), 10) + 1;         // Calculate sum of power of digits        while(num > 0)        {            rem = num % 10;            sum = sum + Math.pow(rem, digit);            num = parseInt(num / 10, 10);        }         // Check for Armstrong number        if (i == sum)            count++;        if (count == n)            return i;    }    return n;} // Driver codelet n = 12; document.write(NthArmstrong(n)); // This code is contributed by rameshtravel07   </script>
// C Program to find// Nth Armstrong Number#include <stdio.h>#include <math.h>#include<limits.h> // Function to find Nth Armstrong Numberint NthArmstrong(int n){    int count = 0;     // upper limit from integer    for (int i = 1; i <= INT_MAX; i++) {        int num = i, rem, digit = 0, sum = 0;         // Copy the value for num in num        num = i;         // Find total digits in num        digit = (int)log10(num) + 1;         // Calculate sum of power of digits        while (num > 0) {            rem = num % 10;            sum = sum + pow(rem, digit);            num = num / 10;        }        // Check for Armstrong number        if (i == sum)            count++;        if (count == n)            return i;    }} // Driver Functionint main(){    int n = 12;    printf("%d", NthArmstrong(n));    return 0;} // This Code is Contributed by//'sathiyamoorthics19'
371
Using Numeric Strings:
When considering the number as a string we can access any digit we want and perform operations
Java
Python3
C#
Javascript
public class armstrongNumber{     public void isArmstrong(String n)    {         char[] s = n.toCharArray();        int size = s.length;        int sum = 0;         for (char num : s)        {            int temp = 1;             int i                = Integer.parseInt(Character.toString(num));             for (int j = 0; j <= size - 1; j++)            {                temp *= i;            }             sum += temp;        }         if (sum == Integer.parseInt(n))        {            System.out.println("True");        }         else        {            System.out.println("False");        }    }     public static void main(String[] args)    {         armstrongNumber am = new armstrongNumber();        am.isArmstrong("153");        am.isArmstrong("1253");    }}
def armstrong(n):    number = str(n)     n = len(number)    output = 0    for i in number:        output = output+int(i)**n     if output == int(number):        return(True)    else:        return(False)  print(armstrong(153))print(armstrong(1253))
using System;public class armstrongNumber {    public void isArmstrong(String n)    {        char[] s = n.ToCharArray();        int size = s.Length;        int sum = 0;        foreach(char num in s)        {            int temp = 1;            int i = Int32.Parse(char.ToString(num));            for (int j = 0; j <= size - 1; j++) {                temp *= i;            }            sum += temp;        }        if (sum == Int32.Parse(n)) {            Console.WriteLine("True");        }        else {            Console.WriteLine("False");        }    }     public static void Main(String[] args)    {        armstrongNumber am = new armstrongNumber();        am.isArmstrong("153");        am.isArmstrong("1253");    }} // This code is contributed by umadevi9616
<script>function armstrong(n){    let number = new String(n)     n = number.length    let output = 0    for(let i of number)      output = output + parseInt(i)**n     if (output == parseInt(number))        return("True" + "<br>")    else        return("False" + "<br>")}         document.write(armstrong(153))document.write(armstrong(1253)) // This code is contributed by _saurabh_jaiswal.</script>
True
False
Time Complexity: O(n).Auxiliary Space: O(1).
Armstrong Number | GeeksforGeeks - YouTubeGeeksforGeeks531K subscribersArmstrong Number | GeeksforGeeksWatch laterShareCopy linkInfoShoppingTap to unmuteIf playback doesn't begin shortly, try restarting your device.More videosMore videosYou're signed outVideos you watch may be added to the TV's watch history and influence TV recommendations. To avoid this, cancel and sign in to YouTube on your computer.CancelConfirmSwitch cameraShareInclude playlistAn error occurred while retrieving sharing information. Please try again later.Watch on0:000:000:00 / 6:10•Live•<div class="player-unavailable"><h1 class="message">An error occurred.</h1><div class="submessage"><a href="https://www.youtube.com/watch?v=ivjDNztMpZU" target="_blank">Try watching this video on www.youtube.com</a>, or enable JavaScript if it is disabled in your browser.</div></div>
References: http://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/chap04/arms.html http://www.programiz.com/c-programming/examples/check-armstrong-number 
This article is contributed by Rahul Agrawal .If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@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. 
nitin mittal
jit_t
RishabhPrabhu
jwelt
Chandan_Kumar
Code_Mech
mukesh07
rameshtravel07
shreyaperla
surindertarika1234
asifmustafa7634
_saurabh_jaiswal
umadevi9616
myeducationalarena
sathiyamoorthics19
anandkumarshivam2266
Oracle
VMWare
Mathematical
VMWare
Oracle
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.