[백준] 1978번 - 소수 찾기 C++

문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.

풀기 전 로직 생각
  1. N을 입력받고 N만큼 입력받도록 반복문을 넣는다.
  2. 입력 받을때마다 약수들의 합을 넣을 isper를 1로 초기화시킨 후 약수인지 판별하여 약수면 isper에 합해지도록 한다.
  3. isper이 1이거나 num이 1이 아니면 count를 1씩 증가시킨다. (isper이 1 그대로 나왔다는것은 약수가 없었기 때문)
  4. 입력 반복문이 끝나면 count를 출력시킨다.
코드
#include <iostream>
using namespace std;

int main() {

	int N; //어떤 숫자
	cin >> N;

	int num; //입력 받을 값
	int count=0; //소수 갯수

	for(int i=0; i<N; i++) { //N만큼 반복

		int isper=1; //약수들의 합
		cin >> num; //N만큼 입력받을 값

		for (int i = 2; i < num; i++) { //약수 판별
			if (num % i == 0) {
				isper += i; //약수들의 합 구하기
			}
		}

		//약수의 합이 1이면 약수가 없어서 더해지지 않았다.
		//그리고 1은 소수가 아니므로 num이 1이여서도 안된다.
		if (isper == 1 && num!= 1) {
			count++;
		}
	}

	cout << count;
	
	return 0;
}
결과