Java 常见例子

如果一个正自然数可以表示为 n 次方的每个数字之和,则该自然数称为 n 阶的阿姆斯特朗数。从数学上讲,它可以表示为:

Java 检查阿姆斯特朗数

示例:

153 = 13+53+33 = 1+125+27 = 153

371 = 33+73+13 = 27+343+1 = 371

1634 = 14+64+34+44 = 1+1296+81+256 = 1634

方法 1:检查 Armstrong 数

在下面的示例中,使用名为 ArmStrongNum()MyNum 中的 Armstrong 数。该方法需要两个参数,第一个参数是数字,第二个参数是其中的位数。它使用 Pow() 方法计算数字的幂。请参阅下面的示例了解语法:

public class MyClass {
  //计算一个数字的幂
  static int Pow(int MyNum, int n) {
    int x = 1;
    while(n > 0) {
      x = x*MyNum;
      n--;
    }
    return x;
  }

  static void ArmStrongNum(int MyNum, int Order) {
    int y = MyNum;
    int sum = 0;

    while (y > 0){
      int x = y % 10;
      sum = sum + Pow(x, Order);
      y = y/10;
    }

    if (MyNum == sum){
      System.out.println(MyNum + " is a Armstrong Number.");
    } else {
      System.out.println(MyNum + " is not a Armstrong Number.");
    }
  }

  public static void main(String[] args) {
    ArmStrongNum(371, 3);
    ArmStrongNum(1634, 4);
    ArmStrongNum(1000, 4);
  }
} 

上面的代码将给出以下输出:

371 is a Armstrong Number.
1634 is a Armstrong Number.
1000 is not a Armstrong Number. 

方法 2: Armstrong 数

在此示例中,ArmStrongNum 方法仅需要一个参数,即数字本身。传递参数的位数是在方法内部估计的。

public class MyClass {
  //计算数字的幂
  static int Pow(int MyNum, int n) {
    int x = 1;
    while(n > 0) {
      x = x*MyNum;
      n--;
    }
    return x;
  }

  static void ArmStrongNum(int MyNum) {
    int y = MyNum;
    int sum = 0;
    int Order = 0;
    //查找Number中的位数
    while(y > 0){
      Order++;
      y = y / 10;
    }

    y = MyNum;
    while (y > 0){
      int x = y % 10;
      sum = sum + Pow(x, Order);
      y = y/10;
    }
    
    if (MyNum == sum){
      System.out.println(MyNum + " is a Armstrong Number.");
    } else {
      System.out.println(MyNum + " is not a Armstrong Number.");
    }
  }

  public static void main(String[] args) {
    ArmStrongNum(153);
    ArmStrongNum(9474);
    ArmStrongNum(5000);
  }
} 

上面的代码将给出以下输出:

153 is a Armstrong Number.
9474 is a Armstrong Number.
5000 is not a Armstrong Number.