#include<iostream>
using namespace std;
int main() {
int n, num, cnt=0, prime;
cin>>n;
for(int i=0; i<n; i++) {
prime=1;
cin>>num;
if(num<2){
prime=0;}
else
for(int j=2; j*j<=num; j++){
if(num%j==0){
prime=0;
break;}
}
if(prime==1)
cnt++;
}
cout<<cnt;
}
n개의 소수가 입력되었을 때 소수의 개수를 출력하는 알고리즘이다.
우선 2부터 sqrt(n)의 값 까지 루프를 돌려 약수가 존재하는지 판별한다. 약수가 하나라도 존재하면 소수가 아니기에 prime값에 0(false)를 입력한다. 만약 끝까지 나누어 떨어지는 수가 없으면 소수이기에 prime값은 1(true)가 된다. 참 거짓에 따라 cnt++를 하면 소수의 개수를 출력할 수 있다.
'알고리즘' 카테고리의 다른 글
| Boj 1016 c++ 제곱 ㄴㄴ수 (0) | 2025.05.21 |
|---|---|
| Boj 1019 c++ 책페이지 (0) | 2025.05.17 |
| Boj 11866 c++ 요세푸스 문제 0 (0) | 2025.05.16 |
| Boj 2231 C++ 분해합 (0) | 2025.05.14 |
| Boj 10815 c++ 숫자카드 (0) | 2025.05.11 |