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

swiftserver side programmingprogramming更新于 2025/9/21 14:07:17

本教程将讨论如何编写 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

输出

期望输出将是 -

阿姆斯特朗数为: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 − 打印输出。

求三位数阿姆斯特朗数

示例

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

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 位阿姆斯特朗数

示例

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

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。



相关文章



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