在此程序中,您将学习检查给定的数字是否为阿姆斯特朗数字。您将通过在Java中使用for循环和while循环学习如何做到这一点。
一个正整数称为阿姆斯特朗阶数,n如果
abcd... = an + bn + cn + dn + ...
对于3位的阿姆斯特朗数字,每个数字的立方数之和等于数字本身。例如:
153 = 1*1*1 + 5*5*5 + 3*3*3 // 153 是一个阿姆斯特朗数。
public class Armstrong { public static void main(String[] args) { int number = 371, originalNumber, remainder, result = 0; originalNumber = number; while (originalNumber != 0) { remainder = originalNumber % 10; result += Math.pow(remainder, 3); originalNumber /= 10; } if(result == number) System.out.println(number + " 是一个阿姆斯特朗数。"); else System.out.println(number + " 不是一个阿姆斯特朗数。"); } }
运行该程序时,输出为:
371 是一个阿姆斯特朗数。
首先,给定数字(number)的值存储在另一个整数变量originalNumber中。这是因为,我们需要在最后比较最终数字和原始数字的值。
然后,使用while循环对originalNumber进行遍历循环,直到它等于0。
在每次迭代中,num的最后一位存储在remainder中。
然后,使用Math.pow()函数将remainder加3(数字位数)并加到result中。
然后,除以10后,从originalNumber中删除最后一位数字。
最后,result和number进行比较。如果相等,则为阿姆斯壮数。如果不等,则不是。
public class Armstrong { public static void main(String[] args) { int number = 1634, originalNumber, remainder, result = 0, n = 0; originalNumber = number; for (;originalNumber != 0; originalNumber /= 10, ++n); originalNumber = number; for (;originalNumber != 0; originalNumber /= 10) { remainder = originalNumber % 10; result += Math.pow(remainder, n); } if(result == number) System.out.println(number + " 是一个阿姆斯特朗数."); else System.out.println(number + " 不是一个阿姆斯特朗数."); } }
运行该程序时,输出为:
1634 是一个阿姆斯特朗数.
在此程序中,我们没有使用while循环,而是使用了两个for循环。
第一个for循环用于计算数字中的位数。它是以下形式的压缩形式:
for (;originalNumber != 0; originalNumber /= 10) { n++; }
然后,第二个for循环计算result,其中在每次迭代中,余数由数字n求幂。
访问此页面以了解如何显示两个间隔之间的所有阿姆斯壮数字。