Swift程式:檢查輸入數字是否為Neon數
本教程將討論如何編寫一個Swift程式來檢查輸入數字是否為Neon數。
在數字系統中,如果一個數字的平方數的各位數字之和等於該數字本身,則稱之為Neon數。
以下是Neon數的示例:
讓我們看看數字9是否為Neon數:
9的平方是81,81的各位數字之和是9 (8 + 1 = 9)
所以9是Neon數
讓我們看另一個例子:15
輸入的數字不是Neon數
這裡,15不是Neon數,因為15的平方是225,而225的各位數字之和是9 (2 + 2 + 5 = 9),這與15不相等。
演算法
步驟1 - 從使用者處輸入整數。
步驟2 - 讀取整數並將其賦值給名為inputNumber的變數。
步驟3 - 計算數字的平方,並將其賦值給名為squareNumber的變數。
步驟4 - 使用while迴圈,透過切片計算各位數字之和,並將結果賦值給squareNumber。
步驟5 - 使用if語句檢查該和是否與輸入數字匹配。如果匹配,則輸入數字為Neon數;如果不匹配,則輸入數字不是Neon數。
步驟6 - 在輸出螢幕上顯示最終結果
示例1
以下程式演示如何檢查輸入數字是否為Neon數。
import Foundation import Glibc print("Please enter the number-") var inputNumber = Int(readLine()!)! var squareNumber = inputNumber * inputNumber var sum = 0 var reminder = 0 while(squareNumber > 0){ reminder = squareNumber % 10 sum = sum + reminder squareNumber = squareNumber / 10 } if (sum == inputNumber){ print("Entered number \(inputNumber) is neon number") } else { print("Entered number \(inputNumber) is not neon number") }
標準輸入
Please enter the number- 9
輸出
Entered number 9 is neon number
在上面的程式碼中,我們首先使用readLine()函式獲取使用者輸入,這裡是9。然後我們找到給定數字的平方,即81。現在,使用以下程式碼計算平方數的各位數字之和:8 + 1 = 9。
// Check if squareNumber is positive while(squareNumber > 0){ // Find the remainder of the squareNumber // Using mod 10 reminder = squareNumber % 10 // Add the remainder to the sum sum = sum + reminder // Now leave the last digit of the division // and store the value squareNumber = squareNumber / 10 }
上述程式碼的工作原理是:
squareNumber = 81
reminder = 0
sum = 0
while(81 > 0){
reminder = 81 % 10 = 1
sum = 0 + 1 = 1
squareNumber = 81 / 10 = 8.1 = 8
}
while(8 > 0){
reminder = 8 % 10 = 8
sum = 1 + 8 = 9
squareNumber = 8 / 10 = 0.8 = 0
}
現在使用if語句,我們檢查得到的和是否等於輸入值。如果和等於輸入值,則列印輸入數字是Neon數;如果和不等於輸入值,則列印輸入數字不是Neon數。
在我們的程式碼中,和等於輸入值(即9 == 9),所以輸出是“輸入數字9是Neon數”。
示例2
以下程式演示如何在使用者指定的輸入範圍內查詢Neon數。
import Foundation import Glibc func checkingNeonNumber(inputNumber : Int) -> Bool{ var squareNumber = inputNumber * inputNumber var sum = 0 var reminder = 0 while(squareNumber > 0){ reminder = squareNumber % 10 sum = sum + reminder squareNumber = squareNumber / 10 } return (sum == inputNumber) } print("Please enter lower limit") var lowLimit = Int(readLine()!)! print("Please enter upper limit") var upperLimit = Int(readLine()!)! print("Neon numbers are:") for j in lowLimit...upperLimit{ if (checkingNeonNumber(inputNumber:j)){ print(j) } }
標準輸入
Please enter lower limit 1 Please enter upper limit 100
輸出
Neon numbers are: 1 9
在上面的程式碼中,我們首先建立一個名為checkingNeonNumber()的函式。此函式返回Neon數。查詢Neon數的過程與我們在上述演算法中討論的相同。之後,我們使用readLine()函式從使用者處獲取下限和上限。這裡,下限和上限表示我們將查詢所有Neon數的範圍的起始點和結束點。現在,我們使用for迴圈迭代從下限到上限的迴圈,並使用checkingNeonNumber()檢查每個數字是否為Neon數,如下面的程式碼所示:
for j in lowLimit...upperLimit{ if (checkingNeonNumber(inputNumber:j)){ print(j) } }
並顯示在給定範圍(1到9)內的Neon數列表。