본문 바로가기

개발/알고리즘

[백준] 기본 수학 2 - 1978번 소수 찾기

반응형
 

1978번: 소수 찾기

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

www.acmicpc.net

 

입력

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

출력

N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
주어진 수들 중 소수의 개수를 출력한다.

풀이

소수 찾기 방법을 크게 두 가지로 생각했다
하나는 미리 1000 이하의 모든 소수를 구해 저장해놓는 것과 (DP)
하나는 주어지는 값 이하의 모든 소수를 구하는 방법이다

이 문제의 경우 반복해서 수를 묻지 않음으로 후자의 방법을 사용했다
소수를 찾는 프로그램을 먼저 짠다.
소수를 찾는 방법은 자기 자신이 아닌 수로 나누었을 때 나머지가 0 이 아닌 값이다. (1, 2 제외)

 

Swift 전체 코드

    func prime(num : Int) -> Bool {
        var j = 1
        if num < 2 {
            return false
        }
        for i in stride(from: 2, to: num, by: j * j) {
            j = i
            if num % i == 0 {
                return false
            }
        }
        return true
    }
    
    let input = Int(readLine()!)!
    var value = readLine()!.split(separator: " ")
    var total = 0
    
    for _ in 0..<input {
        let v = Int("\(value.first!)")!
        if prime(num: v) == true {
            total += 1
        }
        value.removeFirst()
    }
    
    print(total)
반응형