[BOJ] 1978 - 소수 찾기


문제

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

입력

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

출력

주어진 수들 중 소수의 개수를 출력한다.

예제 입력 1 

4
1 3 5 7

예제 출력 1 

3

코드

#include <iostream>
using namespace std;
int main(){
    int n; cin>>n;
    int s[n], cnt=0, tmp;
    for(int i=0; i<n; i++cin>>s[i];
    for(int i=0; i<n; i++){
        tmp = 0;
        if(s[i] > 0){
            for(int j=1; j<=s[i]; j++if(s[i] % j == 0) tmp++;
            if(tmp == 2) cnt++;
        }
    }
    cout<<cnt;
}
cs

소수의 정의만 잘 알고 있다면 쉽게 풀 수 있는 문제이다. 유의할 점은 소수에서 1은 제외된다는 것.

난 아무리 제출해도 백준서버 채점에서 틀렸다는 결과만 나와서 대체 뭐가 잘못 되었나 생각했는데 정말 바보같은 실수였다. 최종적으로 출력하는 소수인 경우의 개수(cnt)를 0으로 초기화하지 않고 ++ 연산자로 더해버려서 당연히 틀렸었다. DevCpp에서는 초기화하지 않아도 컴파일러가 0으로 int를 0으로 초기화하는 것 같았다.

변수 선언시 초기화의 중요성에 대해서 다시 한번 실감한 하루였다,,

댓글 없음:

Powered by Blogger.