Program for Armstrong Numbers
- Difficulty Level : Easy
- Last Updated : 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
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++ 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 not
bool
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 Program
int
main()
{
int
x = 153;
cout << boolalpha << isArmstrong(x) << endl;
x = 1253;
cout << boolalpha << isArmstrong(x) << endl;
return
0;
}
C
// 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 not
int
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 Program
int
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
// Java program to determine whether the number is
// Armstrong number or not
public
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
# 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 Program
x
=
153
(isArmstrong(x))
x
=
1253
(isArmstrong(x))
Python3
# 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 number
(isArmstrong(
153
))
(isArmstrong(
1253
))
C#
// C# program to determine whether the
// number is Armstrong number or not
using
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.
Javascript
<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>
Outputtrue falseThe above approach can also be implemented in a shorter way as:
C++
#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
C
#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
// 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."
);
}
}
}
OutputYes. It is Armstrong No.Find nth Armstrong number
Input : 9
Output : 9
Input : 10
Output : 153
C++
// C++ Program to find
// Nth Armstrong Number
#include <bits/stdc++.h>
#include <math.h>
using
namespace
std;
// Function to find Nth Armstrong Number
int
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 Function
int
main()
{
int
n = 12;
cout << NthArmstrong(n);
return
0;
}
// This Code is Contributed by 'jaingyayak'
Java
// Java Program to find
// Nth Armstrong Number
import
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
# Python3 Program to find Nth Armstrong Number
import
math
import
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 Code
n
=
12
(NthArmstrong(n))
# This code is contributed by chandan_jnu
C#
// C# Program to find
// Nth Armstrong Number
using
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
// PHP Program to find
// Nth Armstrong Number
// Function to find
// Nth Armstrong Number
function
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
?>
Javascript
<script>
// Javascript program to find Nth Armstrong Number
// Function to find Nth Armstrong Number
function
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 code
let n = 12;
document.write(NthArmstrong(n));
// This code is contributed by rameshtravel07
</script>
C
// C Program to find
// Nth Armstrong Number
#include <stdio.h>
#include <math.h>
#include<limits.h>
// Function to find Nth Armstrong Number
int
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 Function
int
main()
{
int
n = 12;
printf
(
"%d"
, NthArmstrong(n));
return
0;
}
// This Code is Contributed by
//'sathiyamoorthics19'
Output371Using Numeric Strings:
When considering the number as a string we can access any digit we want and perform operations
Java
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"
);
}
}
Python3
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
)
(armstrong(
153
))
(armstrong(
1253
))
C#
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
Javascript
<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>
OutputTrue FalseTime Complexity: O(n).
Auxiliary Space: O(1).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.
My Personal Notes arrow_drop_upRecommended ArticlesPage :Article Contributed By :Improved By :Article Tags :Practice Tags :