Swift程序:显示两个区间之间的阿姆斯特朗数


本教程将讨论如何编写 Swift 程序来显示两个区间之间的阿姆斯特朗数。

如果一个数的每位数字的 n 次幂之和等于该数本身,则该数被称为阿姆斯特朗数。

例如,数字 407,这里 n = 3

407 = 43 + 03 + 73

407 = 64 + 0 +343

407 =407

因此 407 是阿姆斯特朗数

再例如数字 2346,这里 n = 4

2346 = 24 + 34 + 44 + 64

2346 = 16 + 81 + 256 + 1296

2346 = 1649

因此 2346 不是阿姆斯特朗数。

以下是演示:

输入

假设我们的输入是:

LowerLimit = 1
UpperLimit = 200

输出

期望输出是:

Armstrong Numbers are: 1, 153

算法

以下是算法:

  • 步骤 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 位数的阿姆斯特朗数

示例

下面的程序演示如何在两个区间之间显示阿姆斯特朗数。

Open Compiler
import Foundation import Glibc var interval1 = 1 var interval2 = 600 print("Lower Limit:", interval1) print("Upper Limit:", interval2) print("Armstrong numbers are:") for q in interval1..<interval2{ var sum = 0 var armNum = q // Calculate the sum of 3rd power // of individual digit the given number while (armNum != 0){ let rem = armNum % 10 sum = sum + (rem * rem * rem) armNum = armNum/10 } // If the sum is equal to the given number // Then the number is Armstrong number if (sum == q){ print(q) } }

输出

Lower Limit: 1
Upper Limit: 600
Armstrong numbers are:
1
153
370
371
407

在上例代码中,我们有两个区间,下限是 1,上限是 600。现在使用 for 循环迭代给定范围内的每个数字,并找到该数字每位数字的和。计算出和之后,我们通过相互比较来检查和是否等于给定数字。如果和等于数字,则该数字是阿姆斯特朗数,并打印输出。因此,上述代码的工作原理是:

Lower limit = 1
Upper limit = 600
1st iteration:
Sum = 0
armNum = 1
while (1 != 0){
   let rem = 1 % 10 = 1
   sum = 0 + (1 * 1 * 1) = 1
   armNum = armNum/10 = 1/10 = 0
}
Sum = 1
if (1 == 1) // Condition true{
   print(1)
}
2nd iteration:
Sum = 1
armNum = 2
while (2 != 0){
   let rem = 2 % 10 = 2
   sum = 0 + (2 * 2 * 2) = 8
   armNum = armNum/10 = 2/10 = 0
}
Sum = 8
if (8 == 2) // Condition False{
   print() // Print nothing
}
….. iterate till 599.

查找 n 位数的阿姆斯特朗数

示例

下面的程序演示如何在两个区间之间显示阿姆斯特朗数。

Open Compiler
import Foundation import Glibc var interval1 = 406 var interval2 = 5000 print("Lower Limit:", interval1) print("Upper Limit:", interval2) print("Armstrong numbers are:") for q in interval1..<interval2{ var sum = 0 var armNum = q var count = 0 // Count the total number of digits // present in the given number while(armNum != 0){ armNum = armNum/10 count = count + 1 } armNum = q // 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 == q){ print(q) } }

输出

Lower Limit: 406
Upper Limit: 5000
Armstrong numbers are:
407
1634

在上例代码中,我们有两个区间,下限是 406,上限是 5000。现在使用 for 循环迭代给定范围内的每个数字以检查阿姆斯特朗数。因此,为了找到阿姆斯特朗数,我们首先计算数字中存在的总位数。之后,我们找到数字每位数字的 n 次幂之和。计算出和之后,我们通过相互比较来检查和是否等于给定数字。如果和等于数字,则该数字是阿姆斯特朗数,并打印输出。因此,406 到 5000 之间的阿姆斯特朗数是 407 和 1634。

更新于:2022年10月20日

浏览量:350

开启你的职业生涯

完成课程获得认证

开始学习
广告