swift - 为什么某些值对我的代码不起作用?

标签 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 整除...任何人都可以解释我的代码中的缺陷吗?

最佳答案

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

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

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

关于swift - 为什么某些值对我的代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37976809/

相关文章:

ios - 播放直播新闻 - swift 3

c++ - 在 Linux 32 位上带有基数 36 的 strtoull 溢出 unsigned long long

ios - 使用 CocoaMQTT 连接到我的 mqtt 代理时出现问题

ios - 如何强制 Swift 可选数组(很好)

c++ - 我是否需要手动删除或管理这个 unique_ptr

javascript - 正则表达式 - 数量字段

c - c : unsigned int to float 中的类型强制

java - 如何使用具有可变正弦波大小和整数而不是短路的 FFT 代码?

ios - 无法在数组中插入对象,我想将其添加到用户默认值

swift - 如何获取随机元素的索引