📌  相关文章
📜  两个整数之间的阿姆斯壮数

📅  最后修改于: 2021-04-29 18:25:59             🧑  作者: Mango

如果满足以下条件,则具有数字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