編程相當新,所以希望有人可以用簡單的英語向我解釋.. 我試圖在Swift中建立一個應用程序,告訴你輸入的數字是一個素數或不。如果它不是素數,它也應該告訴你數字e.x的因素。如果用戶輸入6,它告訴你6不是素數,除了可以被0,1和它自己整除之外,它也可以被2和3整除。直到現在編寫的代碼如下:Swift:Prime Number應用程序:變量初始化
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var outputMessage: UILabel!
@IBAction func checkButton(sender: AnyObject) {
var isPrime = true
var inputNumber = textField.text.toInt()
var multiples:Int
if (inputNumber != nil) {
if (inputNumber <= 0) {
outputMessage.text = "Neither 0 nor negative numbers are considered prime numbers!"
textField.resignFirstResponder()
} else {
if (inputNumber == 1) {
outputMessage.text = "1 isn't a prime number!"
textField.resignFirstResponder()
}
else {
for var i = 2; i < inputNumber; ++i {
if (inputNumber! % i == 0) {
// Number is not prime
isPrime = false
multiples = i
}
}
}
if (isPrime == true) {
outputMessage.text = "Yup, that's a prime number!"
textField.resignFirstResponder()
} else {
outputMessage.text = "That number isn't prime. Apart from 1, 0 and itself, the number is also divisible by \(multiples) "
textField.resignFirstResponder()
}
}
} else {
outputMessage.text = "Please enter a number!"
textField.resignFirstResponder()
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
接近尾聲時,輸出消息顯示「這不是素數,除了0,1和它本身,數字可以被整除(倍數)」 代碼在這裏崩潰 - 它表示變量'倍數'在被初始化之前使用。 任何人都可以幫忙嗎?
非常感謝!
順便說,數字是不是0整除 – vacawama 2014-12-07 18:48:29
OT:如果您想要更合理的主要測試,請查找Erathostenes篩。也適用於較小的素數,但肯定比您的方法更有效。還有一些更先進的算法來測試素數,但這是數學難題。 – 2014-12-07 20:16:28
托馬斯,一定會考慮一下。感謝您的建議! – sar91 2014-12-08 12:34:37