swift - 寻找第 n 个质数 |初始化前使用的变量 'prime'

标签 swift swift3

我正在尝试编写一个返回第 n 个素数的 Swift 3.0 方法。存在 other sources for this problem但这些都是在 Swift 3.0 发布之前编写的,因此代码没有跟进。在我的返回语句中 return prime 我收到一条错误消息

Variable 'prime' used before being initialized

这是我的源代码:

func nthPrimeNumber(_ n: Int) -> Int {
var prime: Int
var modulo: Int
var checkPrime: Bool
var count = 0
for prime in stride(from: 2, to: 50, by: 1)
{
    if (count < n){
        checkPrime = true;
        for modulo in stride(from: 2, to: prime, by: 1)
        {
            if ((prime % modulo) == 0 )
            {
                checkPrime = false
            }
        }
        if (checkPrime)
        {
            count += 1
        }
    }
}

return prime
}

最佳答案

@BenjaminLowry 的更改将修复编译器警告,但算法仍然会出错。这里的问题是第一个用于函数的prime和for循环中使用的第二个prime是自变量,所以for循环中使用的值不会影响你的结果,因此你的函数将始终返回 0。相反,你需要做这样的事情:

func nthPrimeNumber(_ n: Int) -> Int {
    var result: Int = 0
    var checkPrime: Bool
    var count = 0
    for prime in stride(from: 2, to: 50, by: 1)
    {
        if (count < n){
            checkPrime = true;
            for modulo in stride(from: 2, to: prime, by: 1)
            {
                if ((prime % modulo) == 0 )
                {
                    checkPrime = false
                }
            }
            if (checkPrime)
            {
                count += 1
                result = prime
            }
        }
    }

    return result
}

modulo 的两次使用也是如此。外部 modulo 未使用,可以删除。

关于swift - 寻找第 n 个质数 |初始化前使用的变量 'prime',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41709734/

相关文章:

swift - 将用户添加到 SWIFT 2 中的 MailChimp 订阅者列表

ios - 我正在尝试实现一个可视化触摸的简单库。我不知道如何将它集成到我的项目中

ios - Swift:动态改变TableViewCell高度和动态改变WebView高度

ios - 如何阻止多个 AVAudioPlayer 快速播放?

ios - 以编程方式创建的 UIView 约束未应用 anchor

ios - 将 Travis CI 与 Swift 3.0 和 CocoaPods 结合使用

swift3 - cocoa bean | podspec 添加 GoogleAnalytics 作为依赖项

swift - 在 Swift 3 中计算范围计数

swift - 自定义协议(protocol)

ios - swift - 'PFObject is not convertible to NSString'