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

KIMHAJIN·2023년 3월 11일
0

백준 1978번 : 소수 찾기

https://www.acmicpc.net/problem/1978

#include <iostream>
using namespace std;

int main() {
	int N;
	cin >> N;
	int* list = new int[N]; //3단원 new, delete를 사용하여 동적 할당을 해 주었다.

	for (int i = 0; i < N; i++) {
		cin >> list[i];
	}
	
	int cnt = 0; //소수가 아닐때 +1
	for (int i = 0; i < N; i++) {
		if (list[i] == 1) { cnt ++; }
		else {
			for (int j = 2; j < list[i]; j++) { 
				if (list[i] % j == 0) { //2~자기자신-1까지 나누어 떨어지는 경우 = 소수가 아님
					cnt++;
					break; //소수가 아니므로 이후 계산 생략
				}
			}
		}
	}
	cout << (N-cnt);

	delete[] list;
	return 0;
}

break를 생략해서 자꾸 틀렸다。

ex) 숫자가 6인 경우 2로 나누었을 때 이미 소수가 아니다 판명이 남. 그런데 break를 안해주면 3으로 나눠서 또 나머지가 0이므로 cnt가 두번 + 되버린다. 그러므로 break; 꼭 해주기!!!!

profile
Good day

0개의 댓글