gpt4 book ai didi

swift - 了解快速功能

转载 作者:行者123 更新时间:2023-11-28 09:36:04 25 4
gpt4 key购买 nike

我正在学习 swift,我想知道为什么下面的代码:

func isNumberDivisible(_ number: Int, by divior: Int) -> Bool {

if number % divior == 0 {
return true;
} else {
return false;
}
}

func isPrime (_ number: Int) -> Bool {

var isPrimeNumber = false

for index in 0..<number {

if (isNumberDivisible(number, by:index )) {
isPrimeNumber = false
} else {
isPrimeNumber = true
}
}

return isPrimeNumber
}

isPrime(10)

输出错误 - 执行被中断,EXC_BAD_INSTRUCTION..

最佳答案

您的 for 循环 从零开始。这是一个毫无意义的测试,检查是否可以除以 1 也是如此。

你应该从 2 开始你的索引

for index in 2..<number {

一旦你发现它不是素数,你就应该停下来——这个函数实际打印出来的是这个数字是否能被 (number - 1) 整除。正如@rmaddy 指出的那样,您不需要检查每个数字 - 在您的示例中 10 可以被 2 和 5 整除 - 但您不需要检查 5,因为您已经在 2 上失败了

for index in 2..<Int(sqrt(Double(number))) {

if (isNumberDivisible(number, by:index )){
isPrimeNumber = false
break
} else{
isPrimeNumber = true
}
}

关于swift - 了解快速功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42095498/

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