免責聲明:有這一個在如此相似的問題,但是 他們都要麼根本不提算法的效率,或者是 寫在不同的語言。請參閱this answer,其中談到 關於python的效率,看看它是否有助於您回答我的問題。找到數字的所有因素的最有效方法?
所以我需要最快捷的方式找到所有的任何給定數量的帶有大量迅速工作的因素。我已經有幾次迭代的代碼可行,但需要很長時間才能處理超過6個字符的數字。
編輯:根據要求這裏是我的一些這樣的非有效的方式(錯誤檢查爲清楚起見,省略了)
真的很亂:
@IBAction func findFactorsButton(_ sender: AnyObject) {
if let _ = textField.text, !textField.text!.isEmpty {
counter = 1
factors = []
repeat {
counter += 1
if Int(textField.text!)! % counter == 0 {
factors.append(String(counter))
} else {
continue
}
} while counter != Int(textField.text!)
factors.removeLast()
outputLabel.text = factors.joined(separator: ", ")
} else {
outputLabel.text = ""
}
}
較不凌亂的解決方案(遊樂場):
func calculateFactors(n: Int) -> String {
var result: String = ""
for i in 1...n {
guard n % i == 0 else {continue}
result += i == 1 ? "1" : ", \(i)"
}
print(result)
return result
}
你能不能告訴我們這些迭代,在性能最好的,以最後上市? – dfd
保理單號碼的有效性?還是很多?在後一種情況下,您可以預先計算素數列表。數字在多大範圍內? –
這裏的https://codereview.stackexchange.com/a/166342/35991是一個應該比你的更快的實現。 –