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

示例

下面的程式演示如何在兩個區間之間顯示阿姆斯特朗數。

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。

更新於:2022年10月20日

瀏覽量:350

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.