func isPrime(_ number: Int) -> Bool {
//모두 소수로 보고 true로 초기화, 인덱스랑 넘버랑 맞춰주기 위해서 count는 number + 1
var sieve = Array.init(repeating: true, count: number + 1)
let squareRootOfNumber = Int(sqrt(Double(number)))
if number < 2 {
return false
}
// 넘버의 최대 약수가 squareRootOfNumber 이하이므로 squareRootOfNumber까지 검사
for i in 2...squareRootOfNumber + 1 {
// 소수인지 판별
if sieve[i] {
// 소수의 배수는 false
for j in stride(from: i + i, through: number, by: i) {
sieve[j] = false
}
}
}
print((2...number).filter { sieve[$0] })
return sieve[number]
}