본문 바로가기
algorithm/baekjoon

[C++] 1978::소수찾기

by eunsoa 2022. 10. 8.

링크

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

 

1978번: 소수 찾기

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

www.acmicpc.net

 

 

문제

1978::소수찾기

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

 

 

접근방식

n을 입력받은 뒤 차례로 n개의 수를 입력받고 각 숫자를 1부터 나누기 했을때 약수의 개수가 2개인 소수의 개수를 찾아내었다. 

 

 

주의할 점

1. 1부터 1씩 키워가며 약수를 구하는 과정에서 nums[i]본인까지 나누어주어야 한다.

<=를 포함하는걸 잊지말 것.

 

2. 입력받은 n을 배열의 열의 수에 사용하였는데 문제없이 되었다.

원래는 아래와 같이 적어야 하는줄 알았는데 아래와 같이 적었더니 컴파일 에러가 떴다.

//잘못된 코드
int n;
cin >> n;
int * num = new int[n];

//올바른 코드
int n;
cin >> n;
int nums[n];

이유가 무엇인가!! 모르겠어요

 

 

코드

#include <iostream>
using namespace std;
//backjoon 1978 소수 찾기
int main(void){
	int n;
	int count=0;//소수의 개수 
	cin >> n;
	int nums[n];
	for(int i=0;i<n;i++){
		cin >> nums[i];
	}
	for(int i=0;i<n;i++){
		int divisor=0;//약수개수
		for(int j=1;j<=nums[i];j++){
			if(nums[i]%j==0){
				divisor++;
			}
		}
		if(divisor==2){
			count++;
		}
	}
	cout << count;
	return 0;
}

 

 

 

 

 

'algorithm > baekjoon' 카테고리의 다른 글

[C++] 2581::소수  (1) 2022.10.09
[C++] 1292::쉽게 푸는 문제  (1) 2022.10.08
[C++] 2693번::N번째 큰수  (1) 2022.10.07
[C++] 2609번 최대공약수 최소공배수  (2) 2022.10.07
[C++] 2309_일곱난쟁이  (4) 2022.10.06