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。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP