Kotlin 程序检查阿姆斯特朗数
如果一个正整数满足以下条件,就称其为阿姆斯特朗数的n
次方:
abcd... = an + bn + cn + dn + ...
对于一个3位数的阿姆斯特朗数,每个数字的立方和等于该数字本身。例如:
153 = 1*1*1 + 5*5*5 + 3*3*3 // 153是一个阿姆斯特朗数。
示例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是一个阿姆斯特朗数。")
else
println("$number不是一个阿姆斯特朗数。")
}
当运行该程序时,输出将是:
371是一个阿姆斯特朗数。
- 首先,给定数字(
number
)的值存储在另一个整数变量originalNumber
中。这是因为我们需要在最后比较最终数字和原始数字的值。 - 然后,使用while循环来循环遍历
originalNumber
,直到它等于0。 - 在每次迭代中,将
num
的最后一位存储在remainder
中。 - 然后,使用
Math.pow()
函数将remainder
的值提高到3次方(数字的位数),并添加到result
中。 在这里,将remainder
转换为Double
,因为pow
只接受Double
参数,然后再将其值转换回Int
。 - 最后,通过除以10来从
originalNumber
中移除最后一位数字。
最后,将比较result
和number
。如果相等,它就是阿姆斯特朗数。如果不相等,它就不是。
以下是等效的Java代码:Java程序检查阿姆斯特朗数
示例2:检查n位数的阿姆斯特朗数
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循环然后检查数字是否为阿姆斯特朗数。
访问这个页面以了解如何显示两个区间之间的所有阿姆斯特朗数。