Your prime checker is incorrect, because the very first iteration of the loop returns a value. You have to go through the entire loop before deciding that the number is prime.
func isPrime(_ number: Int) -> Bool {
for primeDivisors in 2..<number {
if number % primeDivisors == 0 {
return false
}
}
return true
}
Note that this code is inefficient, because it continues checking divisibility more times than it is necessary: you can stop checking upon reaching square root of number
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…