原文: https://www.programiz.com/kotlin-programming/examples/armstrong-number
在此程序中,您将学习检查给定的数字是否为阿姆斯特朗数字。 您将通过在 Kotlin 中使用while
循环学习如何做到这一点。
一个正整数称为阿姆斯特朗数n
,如果
abcd... = an + bn + cn + dn + ...
对于 3 位的阿姆斯特朗数,每个数字的立方数之和等于数字本身。 例如:
153 = 1*1*1 + 5*5*5 + 3*3*3 // 153 is an Armstrong number.
示例 1:检查 3 位数字的阿姆斯特朗数
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 is an Armstrong number.")
else
println("$number is not an Armstrong number.")
}
运行该程序时,输出为:
371 is an Armstrong number.
- 首先,给定数字(
num
)的值存储在另一个整数变量originalNumber
中。 这是因为,我们需要在最后比较最终编号和原始编号的值。 然后,使用
while
循环循环遍历originalNumber
,直到等于 0。- 在每次迭代中,
num
的最后一位存储在remainder
中。 - 然后,使用
Math.pow()
函数将remainder
乘以 3(数字位数),并将其添加到result
中。
此处,remainder
被转换为Double
,因为pow
仅接受Double
参数,并且其值再次转换回Int
- 然后,除以 10 后,从
originalNumber
中删除最后一位数字。
- 在每次迭代中,
- 最后,比较
result
和num
。 如果相等,则为阿姆斯特朗数。 如果不是,则不是。
以下是等效的 Java 代码:用于检查阿姆斯特朗数的 Java 程序
示例 2:检查 n 位数字的阿姆斯特朗数
fun main(args: Array<string>) {
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 is an Armstrong number.")
else
println("$number is not an Armstrong number.")
}</string>
在此程序中,我们使用了两个while
循环。 第一个while
循环用于计算num
中的位数。
然后,将originalNumber
恢复为给定的num
。
然后,第二个while
循环检查数字是否为阿姆斯特朗数。
访问此页面了解如何显示两个间隔之间的所有阿姆斯特朗数。