为什么有些值不能用于我的代码?

时间:2016-06-22 19:35:12

标签: swift integer

我正在尝试创建一个应用程序,让用户输入一个数字,应用程序将确定它是否为素数。这是我的代码:

var arr: [Int] = [2, 3, 4, 5, 6, 7, 8, 9]
let text = Int(textField.text!)!
for x in arr {
    if text == 1 {
        iLabel.text = "NOT PRIME!"
    }
    else if x == 2 || x == 3 || x == 5 || x == 7 {
        iLabel.text = "IT'S PRIME!"
    }
    else if text % x == 0 {
        iLabel.text = "NOT PRIME!"
        break
    }
    else if text % x != 0 {
        iLabel.text = "IT'S PRIME!"
        break
    }
}

在大多数情况下,这是有效的。但是,当我将变量“text”设置为82之类的结果时,结果是“IT'S PRIME!”尽管它可以被2整除... ...任何人都可以解释我的代码中的缺陷吗?

1 个答案:

答案 0 :(得分:1)

if text == 1 else if x == 2 else if text % x == 0
     ^               ^                ^

它将触发x=2并在进入模/余检查之前设置“IT'S PRIME`,然后它将跳过。它将在循环3,5,7处触发相同的事情。

82不能被8或9整除,因此不会在循环结束时触发余数检查并意外输出正确的值,在输出框中留下“IT''PRIME',而不实际检查是否是素数。