尝试在阵列中写入Prime数字的检查。该数组随机填充。但是当处理数组代码不起作用时......我做错了什么?谢谢!
更新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)
答案 0 :(得分:2)
我不清楚你想做什么。
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
}
答案 1 :(得分:-2)
如果您想从数组中过滤质数,请使用以下代码:
let primeNumbers = myArray.filter { number in
if number == 0 {
return false
}
return number % 2 == 0
}