프로그래밍/알고리즘

BOJ 1978 · 소수 찾기

반응형


알고리즘 분류 : 수학  


소수(Prime number)란 1과 자기 자신의 숫자로만 나누어떨어지는 2 이상의 자연수를 말한다. 예를 들면 2는 1과 2로만 나눌 수 있으며, 5는 1과 5로만 나눌 수 있다. 6은 1, 2, 3, 6으로 나눌 수 있으므로, 소수가 아니다.


  • 2 미만의 정수는 소수가 아니다.
  • 숫자 N이 소수인지 아닌지를 판별하기 위해서 2부터 N-1까지 나눠보면 된다. 한 번이라도 나누어떨어지는 수가 존재하면, 그 수는 소수가 아니다.
  • N-1까지 확인하면 속도가 느리다. 루트 N까지만 확인해도 소수인지 아닌지 판별할 수 있다.



C++ 소스코드


#include <cstdio>

bool prime(int x) {
    if (x < 2) return false;
    for (int i=2; i*i<=x; i++) {
        if (x%i == 0) return false;
    }
    return true;
}

int main() {
    int n;
    scanf("%d", &n);
    int cnt = 0;
    while (n--) {
        int x;
        scanf("%d", &x);
        if (prime(x)) cnt++;
    }
    printf("%d\n", cnt);
    return 0;
}




Python 3 소스코드


def prime(n):
    if n < 2:
        return False
    for i in range(2, n):
        if i*i > n:
            break
        if n % i == 0:
            return False
    return True


input()
a = list(map(int, input().split()))
cnt = 0
for x in a:
    if prime(x) is True:
        cnt += 1
print(cnt)





참고



반응형