如果满足以下条件,则具有数字a,b,c,d…的正整数称为n阶的阿姆斯特朗数。
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.
例子:
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
下面实现的方法很简单。我们遍历给定范围内的所有数字。对于每个数字,我们首先计算其中的数字。令当前数字中的位数为n。他们找到所有数字的n次幂的和。如果sum等于i,我们打印数字。
C++
// CPP program to find Armstrong numbers in a range
#include
using namespace std;
// Prints Armstrong Numbers in given range
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 += 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 code
int main()
{
int num1 = 100;
int num2 = 400;
findArmstrong(num1, num2);
cout << '\n';
return 0;
}
Java
// JAVA program to find Armstrong
// numbers in a range
import 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
# PYTHON program to find Armstrong
# numbers in a range
import math
# Prints Armstrong Numbers in given range
def 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 code
num1 = 100
num2 = 400
findArmstrong(num1, num2)
print("")
# This code is contributed by Nikita Tiwari.
C#
// C# program to find Armstrong
// numbers in a range
using 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
输出:
153 370 371