링크
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 |