Swift 程序校验阿姆斯特朗数

swiftserver side programmingprogramming更新于 2025/9/21 13:52:17

本教程将讨论如何编写 Swift 程序校验阿姆斯特朗数。

一个数的各位数字的 n 次方之和等于该数本身,则该数称为阿姆斯特朗数。

假设我们有一个数 407,因此 n = 3

153 = 13 + 53 + 33

153 = 1 + 125 + 27

153 = 153

因此 153 是阿姆斯特朗数

假设我们有另一个数 8973,因此 n = 4

8973 = 84 + 94 + 74 + 34

8973 = 4096 + 6561 + 2401 + 27

8973 = 13085

因此,8973 不是阿姆斯特朗数。

以下是同样的演示 -

输入 1

假设给定的输入是 -

Number = 407

输出

期望输出将是 -

是的! 407 是阿姆斯特朗数

输入 2

假设给定的输入是 −

Number = 12489

输出

期望的输出将是 −

不! 12489 不是阿姆斯特朗数

算法

以下是算法 -

  • 步骤 1 - 声明两个变量分别用于存储下限和上限。

  • 步骤 2 - 运行一个从下限到上限的 for 循环,遍历每个元素。

  • 步骤 3 - 声明另一个变量用于存储总和。

  • 步骤 4 - 声明另一个变量用于存储给定数字中存在的位数。

  • 步骤 5 - 计算存在的位数在给定的数字中-

while(armNum != 0){
   armNum = armNum/10
   count = count + 1
}
  • 步骤 6- 计算给定数字各个数字幂的和

let rem = armNum % 10
sum = sum + (rem * rem * rem)
armNum = armNum/10
  • 步骤 7- 将和与给定数字本身进行比较。如果和与给定数字相等,则该数字为阿姆斯特朗数。否则,不为阿姆斯特朗数。

  • 步骤 8- 打印输出。

检查 3 位数阿姆斯特朗数

示例

以下程序演示如何检查阿姆斯特朗数。

import Foundation import Glibc var myNumber = 407 var sum = 0 var n = myNumber // Calculate the sum of 3rd power // of individual digit the given number while (n != 0){ let rem = n % 10 sum = sum + (rem * rem * rem) n = n/10 } // If the sum is equal to the given number // Then the number is Armstrong number if (sum == myNumber){ print("YES! \(myNumber) is an Armstrong number") } else{ print("NO! \(myNumber) is not an Armstrong number") }

输出

YES! 407 is an Armstrong number

在上面的代码中,我们有一个数字 = 407。现在我们计算该数字各个数字的三次方之和。计算和之后,我们比较和是否等于给定的数字。如果和等于给定的数字,则该数字为阿姆斯特朗数。否则,不是。因此,上述代码的工作原理是 -

myNumber = 407
Sum = 0
1st iteration:
while (407 != 0){
   let rem = 407 % 10 = 7
   sum = sum + (rem * rem * rem) = 0 + (7 * 7 * 7) = 343
   n = 407/10 = 40
}

2nd iteration:
while (40 != 0){
   let rem = 40 % 10 = 0
   sum = sum + (rem * rem * rem) = 343 + (0* 0 * 0) = 343
   n = 40/10 = 4
}

3rd iteration:
while (4 != 0){
   let rem = 4 % 10 = 4
   sum = sum + (rem * rem * rem) = 343 + (4* 4 * 4) = 343 + 64 = 407
   n = 4/10 = 0
}
Sum = 407
if (407 == 407) // Condition is true{
   print("YES! \(myNumber) is an Armstrong number")
}

因此输出为"是!407 是阿姆斯特朗数",因为 407 就是阿姆斯特朗数。

检查 n 位阿姆斯特朗数

示例

以下程序演示如何检查阿姆斯特朗数。

import Foundation import Glibc var num = 40689 print("Number:", num) var sum = 0 var armNum = num var count = 0 // Count the total number of digits // present in the given number while(armNum != 0){ armNum = armNum/10 count = count + 1 } armNum = num // Calculate the sum of nth power // of individual digits of the given number while (armNum != 0){ let rem = armNum % 10 sum = sum + Int(pow(Double(rem), Double(count))) armNum = armNum/10 } // If the sum is equal to the given number // Then the number is Armstrong number if (sum == num){ print("Yes the number is an Armstrong number") } else{ print("No the number is not an Armstrong number") }

输出

Number: 40689
No the number is not an Armstrong number

在上面的代码中,我们有一个数字 = 40689。现在我们检查这个数字是否是阿姆斯特朗数。因此,要找到阿姆斯特朗数,我们首先计算该数字的总位数。然后,我们求出该数字各个数字的 n 次方之和。计算出和之后,我们通过比较两者是否等于给定的数字来检查和是否相等。如果和等于给定的数字,则该数字是阿姆斯特朗数,并打印输出。因此,数字 = 40689 不是阿姆斯特朗数。



相关文章



关于我们 | 隐私条款 | 学习路线
返回顶部