Swift 程序检查阿姆斯特朗数
本教程将讨论如何编写 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
输出
所需的输出将为 -
YES! 407 is an Armstrong Numbers
输入 2
假设我们的给定输入为 -
Number = 12489
输出
所需的输出将为 -
NO! 12489 is not an Armstrong Numbers
算法
以下是算法 -
步骤 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。现在我们找到数字的各个数字的 3 次幂之和。计算完总和后,我们现在找到比较总和是否等于给定数字。如果总和等于数字,则该数字为阿姆斯特朗数。否则不是。所以上面代码的工作原理是 -
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") }
因此,输出为“YES!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 不是阿姆斯特朗数。