728x90
반응형
https://www.acmicpc.net/problem/1978
#include <iostream>
using namespace std;
int cnt = 0;
void isPrime(int n) {
if (n == 1) return;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return;
}
cnt++;
}
int main() {
int n, num;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> num;
isPrime(num);
}
cout << cnt << endl;
return 0;
}
소수 = 1과 자기 자신으로만 나누어지는 수 = 약수가 2개인 수
합성수 = 1과 자기 자신을 제외한 다른 약수를 가지고 있는 수
* 1은 소수도 합성수도 아님
소수 판정법
합성수 N에서 1을 제외한 가장 작은 약수는 √N 이하이다.
<증명>
합성수 N에서 1을 제외한 가장 작은 약수를 X라 하자.
N/x 또한 1이 아닌 N의 약수이기 때문에 X<=(N/x)
따라서 X^2<=N이므로 X<=√N
-> 2부터 √N까지의 수로 나누어지지 않으면 소수
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 1822번 차집합 (C++) (0) | 2021.12.23 |
---|---|
[BOJ] 5639번 이진 검색 트리 (C++) (0) | 2021.12.22 |
[BOJ] 15651번 N과 M (3) (C++) (0) | 2021.11.11 |
[BOJ] 1987번 알파벳 (C++) (0) | 2021.11.10 |
[BOJ] 1927번 최소 힙 (C++) (0) | 2021.11.10 |