gpt4 book ai didi

swift - 识别质数

转载 作者:搜寻专家 更新时间:2023-11-01 05:48:32 25 4
gpt4 key购买 nike

出于某种原因,它总是给我错误的结果。无论将什么数字分配给“数字”变量,它始终是 isItPrime = true

这是我的代码:

let number = 6
var i = 1
var isItPrime: Bool?
while i < number {
if number % i == 0 {
isItPrime = false
} else {
isItPrime = true
}
i += 1
}
print(isItPrime)

有人可以向我解释我的代码有什么问题以及为什么 isItPrime bool 输出总是 true 吗?

最佳答案

问题1

你的 while 循环的最后一次迭代

while i < number {
if number % i == 0 {
isItPrime = false
} else {
isItPrime = true
}
i += 1
}

覆盖结果。

所以你总是得到以下结果

if number % (number-1) == 0 {
isItPrime = false
} else {
isItPrime = true
}

问题2

最后每个数都可以被1整除,所以你应该从2开始i。所以

let number = 6
var i = 2
var isItPrime = true
while i < number {
if number % i == 0 {
isItPrime = false
break
}
}
print(isItPrime)

重构

您可以使用函数式编程编写类似的逻辑

let number = 5
let upperLimit = Int(Double(number).squareRoot())
let isPrime = !(2...upperLimit).contains { number % $0 == 0 }

关于swift - 识别质数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45784858/

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