Swift 程式檢查阿姆斯特朗數
本教程將討論如何編寫 Swift 程式來檢查阿姆斯特朗數。
如果一個數的每個數字的 n 次冪之和等於該數本身,則這種型別的數稱為阿姆斯特朗數。
假設我們有一個數字 407,這裡 n = 3
153 = 13 + 53 + 33
153 = 1 + 125 + 27
153 = 153
因此,153 是阿姆斯特朗數
假設我們有另一個數字 8973,這裡 n = 4
8973 = 84 + 94 + 74 + 34
8973 = 4096 + 6561 + 2401 + 27
8973 = 13085
因此,8973 不是阿姆斯特朗數。
以下是相同內容的演示 -
輸入 1
假設我們的給定輸入為 -
Number = 407
輸出
所需的輸出將為 -
YES! 407 is an Armstrong Numbers
輸入 2
假設我們的給定輸入為 -
Number = 12489
輸出
所需的輸出將為 -
NO! 12489 is not an Armstrong Numbers
演算法
以下是演算法 -
步驟 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 myNumber = 407 var sum = 0 var n = myNumber // Calculate the sum of 3rd power // of individual digit the given number while (n != 0){ let rem = n % 10 sum = sum + (rem * rem * rem) n = n/10 } // If the sum is equal to the given number // Then the number is Armstrong number if (sum == myNumber){ print("YES! \(myNumber) is an Armstrong number") } else{ print("NO! \(myNumber) is not an Armstrong number") }
輸出
YES! 407 is an Armstrong number
在這裡,在上面的程式碼中,我們有一個數字 = 407。現在我們找到數字的各個數字的 3 次冪之和。計算完總和後,我們現在找到比較總和是否等於給定數字。如果總和等於數字,則該數字為阿姆斯特朗數。否則不是。所以上面程式碼的工作原理是 -
myNumber = 407
Sum = 0
1st iteration:
while (407 != 0){
let rem = 407 % 10 = 7
sum = sum + (rem * rem * rem) = 0 + (7 * 7 * 7) = 343
n = 407/10 = 40
}
2nd iteration:
while (40 != 0){
let rem = 40 % 10 = 0
sum = sum + (rem * rem * rem) = 343 + (0* 0 * 0) = 343
n = 40/10 = 4
}
3rd iteration:
while (4 != 0){
let rem = 4 % 10 = 4
sum = sum + (rem * rem * rem) = 343 + (4* 4 * 4) = 343 + 64 = 407
n = 4/10 = 0
}
Sum = 407
if (407 == 407) // Condition is true{
print("YES! \(myNumber) is an Armstrong number")
}
因此,輸出為“YES!407 是阿姆斯特朗數”,因為 407 是阿姆斯特朗數。
檢查 n 位阿姆斯特朗數
示例
以下程式演示瞭如何檢查阿姆斯特朗數。
import Foundation import Glibc var num = 40689 print("Number:", num) var sum = 0 var armNum = num var count = 0 // Count the total number of digits // present in the given number while(armNum != 0){ armNum = armNum/10 count = count + 1 } armNum = num // 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 == num){ print("Yes the number is an Armstrong number") } else{ print("No the number is not an Armstrong number") }
輸出
Number: 40689 No the number is not an Armstrong number
在這裡,在上面的程式碼中,我們有一個數字 = 40689。現在我們檢查該數字是阿姆斯特朗數還是不是。因此,要找到阿姆斯特朗數,我們首先計算數字中存在的總數字位數。之後,我們找到數字的各個數字的 n 次冪之和。現在,在計算完總和後,我們透過相互比較來檢查總和是否等於給定數字。如果總和等於數字,則該數字為阿姆斯特朗數並列印輸出。因此,數字 = 40689 不是阿姆斯特朗數。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP