使用函式顯示區間內阿姆斯特朗數的 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 - 宣告兩個變數來儲存下限和上限。

  • 步驟 9 - 呼叫函式並將下限和上限作為引數傳遞。

  • 步驟 10 - 列印輸出。

示例

以下程式演示瞭如何使用函式顯示兩個區間之間的阿姆斯特朗數。

import Foundation import Glibc // Function to find the Armstrong number // in between the given intervals func findArmstrongNumber(interval1: Int, interval2: Int){ 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) } } } var lower = 1 var upper = 1000 print("Lower Limit:", lower) print("Upper Limit:", upper) print("Armstrong numbers are:") // Calling function findArmstrongNumber(interval1: lower, interval2: upper)

輸出

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

在這裡,在上面的程式碼中,我們有兩個區間,下限為 1,上限為 600。現在我們建立一個函式來查詢 3 位數的阿姆斯特朗數。在這個函式中,使用 for 迴圈,我們迭代給定範圍內的每個數字,並找到該數字的各個數字的總和。計算完總和後,我們透過相互比較來檢查總和是否等於給定數字。如果總和等於數字,則該數字為阿姆斯特朗數,並列印輸出。因此,上面程式碼的工作原理是 -

findArmstrongNumber(interval1: 1, interval2: 1000):
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 999.

查詢 n 位阿姆斯特朗數

示例

以下程式演示瞭如何使用函式顯示兩個區間之間的阿姆斯特朗數。

import Foundation import Glibc // Function to find armstring number func FindArmstrong(lower: Int, upper: Int){ for q in lower..<upper{ 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) } } } var interval1 = 1000 var interval2 = 10000 print("Lower Limit:", interval1) print("Upper Limit:", interval2) print("Armstrong numbers are:") FindArmstrong(lower: interval1, upper: interval2)

輸出

Lower Limit: 1000
Upper Limit: 10000
Armstrong numbers are:
1634
8208
9474

在這裡,在上面的程式碼中,我們有兩個區間,下限為 1000,上限為 10000。現在我們建立一個函式來查詢 n 位阿姆斯特朗數。在這個函式中,使用 for 迴圈,我們迭代給定範圍內的每個數字以檢查是否為阿姆斯特朗數。因此,要查詢阿姆斯特朗數,我們首先計算數字中存在的數字總數。之後,我們找到數字的各個數字的 n 次冪之和。現在,在計算完總和後,我們透過相互比較來檢查總和是否等於給定數字。如果總和等於數字,則該數字為阿姆斯特朗數,並列印輸出。因此,1000 到 10000 之間的阿姆斯特朗數為 1634、8208 和 9474。

更新於: 2022年10月20日

291 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

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