【发布时间】:2014-12-07 18:33:27
【问题描述】:
我对编程很陌生,所以希望有人能用简单的英语向我解释这个.. 我试图在 Swift 中构建一个应用程序,告诉你输入的数字是否是质数。如果它不是素数,它还应该告诉你数字的因数,例如如果用户输入 6,它会告诉你 6 不是质数,它除了能被 0、1 和它自己整除之外,还能被 2 和 3 整除。到现在写的代码如下:
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 整除。
-
OT:如果您想要更合理的主要测试,请寻找 Sieve pf Erathostenes。也仅适用于较小的素数,但绝对比您的方法更有效。有一些更先进的算法可以测试素数,但这是很难计算的。
-
Thomas,一定会调查的。谢谢你的建议!
标签: ios swift variable-initialization