正在尝试为数组中的质数编写检查。该数组是随机填充的。但是当处理数组代码时不起作用......我做错了什么?谢谢!
更新 2 正确填充数组。但是对于测试简单的数字,出了点问题。具体错在哪里不好说,但关键是简单的数字排序规则不起作用。
import Foundation
func randomArray(var i:Int,var k:Int, var array: [Int]=[], var newArray: [Int]=[]) ->Int {
for i=0;i<10;i++ {
array.append(Int(arc4random_uniform(10)))
}
for i=0;i<=array.count; i++ {
for k=2; k<array[i]; k++ {
if array[i] != 0 && array[i] != 1 && array[i]%k != 0 {
newArray.append(array[i])
} else {
return 0
}
}
}
return newArray[i]
}
randomArray(0, k: 0)
最佳答案
我不清楚你想做什么。
a) 如果您想随机生成一个长度为 k
的数组并过滤素数,请使用以下代码。请注意,这可以为您提供长度介于 0 到 k
之间的数组,因为它们在随机生成的数组中可能不是质数,或者生成的每个数字都是质数:
func isPrime(num: Int) -> Bool {
if num < 2 {
return false
}
for i in 2..<num {
if num % i == 0 {
return false
}
}
return true
}
func randomArray(len: Int) -> [Int] {
var results = [Int]()
for _ in 0..<len {
results.append(Int(arc4random_uniform(10)))
}
return results.filter(isPrime)
}
b) 如果你想要一个 k
质数的数组,请改用它:
func randomPrimeArray(len: Int) -> [Int] {
var results = [Int]()
while results.count < len {
let x = Int(arc4random_uniform(10))
if isPrime(x) {
results.append(x)
}
}
return results
}
关于swift - 检查数组中的素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35970763/