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