MUKER_DEV with iOS
[Swift] Programmers LV1 - 다른 사람의 풀이 본문
제 문제 풀이는 최선의 풀이가 아닐 수 있습니다. 문제를 푸는 방법은 다양합니다!
문제설명
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
제한 조건
- n은 2이상 1000000이하의 자연수입니다.
입출력 예
n | result |
10 | 4 |
5 | 3 |
문제 분석
1.
Solution.swift
func solution(_ n:Int) -> Int {
var isPrimeArray = Array(repeating: true, count: n + 1)
var primeCount = 0
isPrimeArray[0] = false
isPrimeArray[1] = false
for i in 0...n {
if isPrimeArray[i] {
for j in stride(from: i * 2, through: n, by: i) {
isPrimeArray[j] = false
}
primeCount += 1
}
}
return primeCount
}
Progremmers Recommend Solution
func solution(_ n:Int) -> Int {
var primes:[Bool] = [Bool](repeating:false, count:n+1);
var count = 0;
for i in 2...n {
if(!primes[i]){
count = count + 1;
}
for j in 1...(n/i) {
primes[i*j]=true;
}
}
return count;
}