Dado un número x , determine si el número dado es el número de Armstrong o no.
Un entero positivo de n dígitos se denomina número de Armstrong de orden n (el orden es el número de dígitos) si.
abcd… = pow(a,n) + pow(b,n) + pow(c,n) + pow(d,n) + ….
Ejemplo:
Entrada : 153
Salida : Sí
153 es un número de Armstrong.
1*1*1 + 5*5*5 + 3*3*3 = 153
Entrada : 120
Salida : Sí
120 no es un número de Armstrong.
1*1*1 + 2*2*2 + 0*0*0 = 9
Entrada: 1253
Salida : Sí
1253 no es un número de Armstrong
1*1*1*1 + 2*2*2*2 + 5*5*5*5 + 3*3*3*3 = 723
Entrada: 1634
Salida : Sí
1*1*1*1 + 6*6*6*6 + 3*3*3*3 + 4*4*4*4 = 1634
Enfoque: La idea es primero contar los dígitos de los números (o encontrar el orden). Sea n el número de dígitos. Para cada dígito r en el número de entrada x, calcule r n . Si la suma de todos estos valores es igual a n, devuelve verdadero, de lo contrario, falso.
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>
Produccióntrue falseEl enfoque anterior también se puede implementar de una manera más corta como:
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."
);
}
}
}
ProducciónYes. It is Armstrong No.Encuentra el número n de Armstrong
Entrada : 9
Salida : 9
Entrada : 10
Salida : 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'
Producción371Uso de strings numéricas:
Al considerar el número como una string, podemos acceder a cualquier dígito que queramos y realizar operaciones
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>
ProducciónTrue FalseComplejidad temporal: O(n).
Espacio Auxiliar: O(1).Referencias:
http://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/chap04/arms.html
http://www.programiz.com/c-programming/examples/check-armstrong-number
Este artículo es una contribución de Rahul Agrawal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA