专业的JAVA编程教程与资源

网站首页 > java教程 正文

如何用Java实现查找并打印0到9999之间的阿姆斯特朗数

temp10 2024-10-11 18:28:54 java教程 16 ℃ 0 评论

三位数的阿姆斯特朗数是一个整数,其各位数字的立方之和等于该数本身。例如,153是阿姆斯特朗数,因为1^3 + 5^3 + 3^3 = 153,371 是阿姆斯特朗数,因为3^3 + 7^3 + 1^3 = 371。如果对整数10取模,您将得到最后一位数字,例如 656%10 将得到 6,即 656 的最后一位数字。类似地,要减少每次迭代后的输入,您可以使用除法运算符,因为 656/10 将返回 65,没有最后一位数字。如果你知道这个技巧,那么解决任何需要检查各个数字的编程问题就变得很容易。这个Java程序使用相同的技术并计算0到999范围内的所有阿姆斯特朗数。这个程序也有不同的变体,例如你如何找到四位数的阿姆斯特朗数,因为这个程序只计算三位数阿姆斯特朗数字。 为此,您需要记住阿姆斯特朗数的一般定义,即阿姆斯特朗数是一个 n 位数字,等于其数字的 n 次方之和。

这是我们的 Java 程序,用于显示 0 到 9999 之间的所有阿姆斯特朗数。实际上,该范围内只有三位阿姆斯特朗数。

如何用Java实现查找并打印0到9999之间的阿姆斯特朗数

注:检查数字是否是阿姆斯特朗数的逻辑被硬编码为只能查找三位数。

因此,准确地说,这是一个显示 0 到 9999 之间的数字阿姆斯特朗数或任何用户提供的上限范围的程序。回到逻辑上来,它所做的只是:

  1. 在每次迭代中提取数字的各个数字
  2. 计算该数字的立方并添加到以零初始化的和中
  3. 将数字减少 10 倍以删除一位数字

它重复这个过程,直到输入不为零,这是我们停止检查的基本情况。在此循环结束时,如果计算出的总和等于原始数字,则它是阿姆斯特朗数,否则不是。

此逻辑封装在名为isArmstrongNumber(int number)的静态方法中。这再次在循环中调用,以提供从 0 到 9999 的所有数字。逻辑很简单,但提供了一种强大的技术来解决任何基于数字的各个数字的问题。

打印阿姆斯特朗数的 Java 程序

import java.util.Arrays;
import java.util.Scanner;

/**
* 该 Java 程序计算 0 到 9999 范围内的所有阿姆斯特朗数。
* 阿姆斯特朗数是其各位数字之和达到
* 三次方等于数字本身。例如,153 是阿姆斯特朗
* 数,因为 1**3 + 5**3 + 3**3 = 153。
*
*/
public class ArmstrongNumberDemo{

public static void main(String args[]) {

Scanner cmd = new Scanner(System.in);
System.out.println("Please enter a number up-to which
Armstrong number will be find");
int count = cmd.nextInt();
int index = 0;
for (int i = 0; i < count; i++) {
if (isArmstrongNumber(i)) {
System.out.printf("Armstrong number %d: %d %n", index, i);
index++;
}
}
cmd.close();
}

/**
* Method to check if given number is Armstrong Number or not
*
* @param number
* @return true, if Armstrong number, false otherwise.
*/
public static boolean isArmstrongNumber(int number) {
int sum = 0;
int copyOfInput = number;
while (copyOfInput != 0) {
int lastDigit = copyOfInput % 10;
sum += (lastDigit * lastDigit * lastDigit);
copyOfInput /= 10;
}

if (sum == number) {
return true;
}
return false;
}

}


Output

Please enter a number up-to which Armstrong number will be find

9999

Armstrong number 0: 0

Armstrong number 1: 1

Armstrong number 2: 153

Armstrong number 3: 370

Armstrong number 4: 371

Armstrong number 5: 407

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表