📜  用于检查两个整数之间的阿姆斯壮数的Java程序

📅  最后修改于: 2022-05-13 01:54:29.335000             🧑  作者: Mango

用于检查两个整数之间的阿姆斯壮数的Java程序

如果满足以下条件,则数字为 p、q、r、s... 的正整数被称为 n 阶阿姆斯特朗数。

pqrs... = pn + qn + rn + sn +....

例子:

370 = 3*3*3 + 7*7*7 + 0 
   =  27 + 343 + 0
   =  370

因此,370 是阿姆斯壮数。

例子:

Input : 100 200
Output :153
Explanation : 100 and 200 are given  
two integers.
 153 = 1*1*1 + 5*5*5 + 3*3*3  
     = 1 + 125 + 27
     =  153
Therefore, only 153 is an Armstrong number between 100 and 200.

方法:



首先,我们将遍历给定范围内的所有数字。然后,对于每个数字,我们必须计算其中的位数。如果当前数字的位数为 n,则求该数中所有数字的 (n) 次幂之和。如果总和等于当前数字i ,则打印该数字。

例子:

Java
// JAVA program to find Armstrong
// numbers between two integers
import java.io.*;
import java.math.*;
  
class gfg {
  
    // Function to print Armstrong
    // Numbers between two integers
    static void ArmstrongNum(int l, int h)
    {
        for (int j = l + 1; j < h; ++j) {
  
            // Calculating number of digits
            int y = j;
            int N = 0;
            while (y != 0) {
                y /= 10;
                ++N;
            }
  
            // Calculating the sum of nth
            // power of all the digits
            int sum_power = 0;
            y = j;
            while (y != 0) {
                int d = y % 10;
                sum_power += Math.pow(d, N);
                y /= 10;
            }
  
            // Checking if the current number
            // i is equal to the sum of nth
            // power of all the digits
            if (sum_power == j)
                System.out.print(j + " ");
        }
    }
  
    // The Driver code
    public static void main(String args[])
    {
        int n1 = 50;
        int n2 = 500;
        ArmstrongNum(n1, n2);
        System.out.println();
    }
}


输出
153 370 371 407 

同样,我们可以在任何给定范围内找到阿姆斯特朗数。