gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 10:59:01 25 4
gpt4 key购买 nike

我正在尝试编写一个返回第 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com