当前位置:  开发笔记 > 编程语言 > 正文

素数确定程序

如何解决《素数确定程序》经验,为你挑选了1个好方法。

我的逻辑出了什么问题?9这个循环如何作为素数而非素数出现?

这可以按照0,1,2,3,4,5,6,7,8的预期工作,但挂起9 ...


var userInput = 9

if userInput == 0 {
    print("0 is not a prime number")
} else if userInput == 1 {
    print("1 is not a prime number")
} else if userInput == 2 {
    print("2 is a prime number")
} else {
    for var i = 2; i < userInput; i = i + 1 {
        if userInput % i == 0 {
            print("\(userInput) is not a prime number")
            break
        } else {
            print("\(userInput) is a prime number")
            break
        }
    }
}

R Menke.. 5

删除其中一个break陈述.循环需要完全运行,直到找到不是素数的条件.如果没有找到上述条件,则为素数.

var userInput = 9

if userInput == 0 {

    print("0 is not a prime number")

} else if userInput == 1 {

    print("1 is not a prime number")

} else if userInput == 2 {

    print("2 is a prime number")

} else {

    for var i = 2; i < userInput; i = i + 1 {

        if userInput % i == 0 {

            print("\(userInput) is not a prime number")
            break

        } else {

            print("\(userInput) is a prime number")
            // no break here

        }
    }
}

或者更有用:

逻辑嵌入在函数中,因此您可以使用return控制流代替break.因为return true最后你只需要寻找false条件.如果它不是一个素数,你return false用来逃避函数,return true最后将永远不会被调用.

extension Int {

    func isPrimeNumber() -> Bool {

        switch self {
        case 0 : return false
        case 1 : return false
        default :
            for i in 2..

该函数放在扩展名中,Int因此您只需调用该函数即可userInput.



1> R Menke..:

删除其中一个break陈述.循环需要完全运行,直到找到不是素数的条件.如果没有找到上述条件,则为素数.

var userInput = 9

if userInput == 0 {

    print("0 is not a prime number")

} else if userInput == 1 {

    print("1 is not a prime number")

} else if userInput == 2 {

    print("2 is a prime number")

} else {

    for var i = 2; i < userInput; i = i + 1 {

        if userInput % i == 0 {

            print("\(userInput) is not a prime number")
            break

        } else {

            print("\(userInput) is a prime number")
            // no break here

        }
    }
}

或者更有用:

逻辑嵌入在函数中,因此您可以使用return控制流代替break.因为return true最后你只需要寻找false条件.如果它不是一个素数,你return false用来逃避函数,return true最后将永远不会被调用.

extension Int {

    func isPrimeNumber() -> Bool {

        switch self {
        case 0 : return false
        case 1 : return false
        default :
            for i in 2..

该函数放在扩展名中,Int因此您只需调用该函数即可userInput.


如果你正在改进他的代码,你也可以使用`switch`语句.
推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有