原文: https://www.programiz.com/kotlin-programming/examples/armstrong-number

在此程序中,您将学习检查给定的数字是否为阿姆斯特朗数字。 您将通过在 Kotlin 中使用while循环学习如何做到这一点。

一个正整数称为阿姆斯特朗数n,如果

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

对于 3 位的阿姆斯特朗数,每个数字的立方数之和等于数字本身。 例如:

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

示例 1:检查 3 位数字的阿姆斯特朗数

  1. fun main(args: Array<String>) {
  2. val number = 371
  3. var originalNumber: Int
  4. var remainder: Int
  5. var result = 0
  6. originalNumber = number
  7. while (originalNumber != 0) {
  8. remainder = originalNumber % 10
  9. result += Math.pow(remainder.toDouble(), 3.0).toInt()
  10. originalNumber /= 10
  11. }
  12. if (result == number)
  13. println("$number is an Armstrong number.")
  14. else
  15. println("$number is not an Armstrong number.")
  16. }

运行该程序时,输出为:

  1. 371 is an Armstrong number.
  • 首先,给定数字(num)的值存储在另一个整数变量originalNumber中。 这是因为,我们需要在最后比较最终编号和原始编号的值。
  • 然后,使用while循环循环遍历originalNumber,直到等于 0。

    • 在每次迭代中,num的最后一位存储在remainder中。
    • 然后,使用Math.pow()函数将remainder乘以 3(数字位数),并将其添加到result中。
      此处,remainder被转换为Double,因为pow仅接受Double参数,并且其值再次转换回Int
    • 然后,除以 10 后,从originalNumber中删除最后一位数字。
  • 最后,比较resultnum。 如果相等,则为阿姆斯特朗数。 如果不是,则不是。

以下是等效的 Java 代码:用于检查阿姆斯特朗数的 Java 程序


示例 2:检查 n 位数字的阿姆斯特朗数

  1. fun main(args: Array<string>) {
  2. val number = 1634
  3. var originalNumber: Int
  4. var remainder: Int
  5. var result = 0
  6. var n = 0
  7. originalNumber = number
  8. while (originalNumber != 0) {
  9. originalNumber /= 10
  10. ++n
  11. }
  12. originalNumber = number
  13. while (originalNumber != 0) {
  14. remainder = originalNumber % 10
  15. result += Math.pow(remainder.toDouble(), n.toDouble()).toInt()
  16. originalNumber /= 10
  17. }
  18. if (result == number)
  19. println("$number is an Armstrong number.")
  20. else
  21. println("$number is not an Armstrong number.")
  22. }</string>

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

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

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

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