2부터 입력된 숫자까지의 모든 소수를 찾아서 반환하는 함수(소수 판별 함수)입니다.
func isPrime(num: Int) -> Bool { var result: Bool = true if num < 2 { result = false }else if num > 2 { for i in 2..<num { if num%i == 0 { result = false } } } return result }
func allPrimeNumber(endNum: Int) -> Array<Any> { var newList:[Int] = [] var resultList:[Int] = [] let inputNum: Int = endNum // 01. 입력 받은 숫자까지의 배열을 만들어둔다. for i in 1...inputNum { newList.append(i) } // 02. 배열 속의 숫자가 소수인지 검사해서, let count: Int = newList.count for j in 0..<count { // 만약 j가 소수이면, resultList 배열에 넣는다, if isPrime(num: newList[j]) { resultList.append(newList[j]) } } return resultList } // 03. 소수만 담긴 새 배열을 프린트한다. // print(allPrimeNumber(endNum:13)) // [2,3,5,7]
func getPrime2(num: Int) -> [Int] { let endNum: Int = num var allNumbers:Set<Int> = [] var primeNumbers:[Int] = [] for checkNum in 2...endNum { if !allNumbers.contains(checkNum) { primeNumbers.append(checkNum) var index = checkNum * 2 while index <= endNum { allNumbers.insert(index) index += checkNum } } } return primeNumbers }
let N = 100 let maxP = 1000 var isPrime: [Bool] = [] var primes: [Int] = [] for i in 0...maxP { isPrime.append(true) } isPrime[0] = false isPrime[1] = false for i in 2...maxP { if isPrime[i] == true { var j = i*i while j <= maxP { isPrime[j] = false j += i } primes.append(i) } } for i in 0..<N { print(primes[i]) }