Kotlin 阿姆斯特朗数的程序

如果一个正整数是 n 阶阿姆斯特朗数,则

abcd... = an + bn + cn + dn + ...

对于一个三位数的阿姆斯特朗数,其各位数字的立方之和等于该数字本身。例如

153 = 1*1*1 + 5*5*5 + 3*3*3  // 153 is an Armstrong number.

示例 1:检查三位数是否为阿姆斯特朗数

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.
  • 首先,给定的数字(number)的值存储在另一个整数变量originalNumber中。这是因为我们需要在最后比较最终数字和原始数字的值。
  • 然后,使用while循环遍历originalNumber,直到它等于0。
    • 在每次迭代中,num 的最后一位数字存储在 remainder 中。
    • 然后,使用Math.pow()函数将remainder的3次幂(数字的位数)相加到result
      在这里,remainder被转换为Double,因为pow只接受Double参数,并且它的值又被转换回Int
    • 然后,在除以10后,从originalNumber中移除最后一位数字。
  • 最后,比较resultnumber。如果相等,则为阿姆斯特朗数。如果不相等,则不是。

以下是等效的 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 is an Armstrong number.")
    else
        println("$number is not an Armstrong number.")
}

在此程序中,我们使用了两个while循环。第一个while循环用于计算number中的位数。

然后,将originalNumber恢复为给定的number

第二个while循环然后检查数字是否为阿姆斯特朗数。

访问此页面以了解如何显示两个区间之间的所有阿姆斯特朗数

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战