swift - 了解快速功能

标签 swift

我正在学习 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/

相关文章:

ios - 使用UserDefaults来存储不同用户的数据

IOS : Make entire view scrollable, 不仅是 subview

swift - 在 Swift 函数中返回任意类型的对象

ios - 虚线边框 UIImageView swift

ios - 两个相同的 CGSize,一个看起来更小

Swift:tableView reloadSections 后不满足约束(自动布局)

ios - Firebase 下载相同的数据

objective-c - Xcode 在哪里存储 3rd 方 API secret /密码/id

swift - 在以编程方式实例化的 UIViewController 中测试 UITableView

SwiftUI 的anchorPreference 折叠其 View 的高度