swift - 检查数组中的素数

标签 swift

正在尝试为数组中的质数编写检查。该数组是随机填充的。但是当处理数组代码时不起作用......我做错了什么?谢谢!

更新 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/

相关文章:

ios - 自定义字体错误

使用世界地图在 uiimageview 上快速绘制坐标

ios swift,在 NSArray 中传递 Parse PFbject

ios - 优化 Swift 字典分配性能

ios - 在一个 UICollectionView 中实现两个 CollectionView 布局

ios - Swift 4 - SceneKit 上的 SpriteKit - 防止触摸底层相机控件

uitableview - 调用 self.tableView.reloadData 需要 10-15 秒

ios - 无法将模块 'UIKit' 加载为 'UIKit'

swift - 超出 iPhone X 框架边界的调试信息

swift - 访问 EKCalendar