检查数组中的素数

时间:2016-03-13 13:23:04

标签: swift

尝试在阵列中写入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)

2 个答案:

答案 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
            }