https://www.acmicpc.net/problem/1978
1978번: 소수 찾기
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
www.acmicpc.net
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
cin >> n;
vector <int> v(n);
for (int i = 0; i < n; i++)
cin >> v[i];
int cnt = 0;
for (int i = 0; i < n; i++)
{
int flag = 1;
int N = v[i];
if (N == 1)
flag = 0;
else
{
for (int j = 2; j < N; j++)
{
if (N % j == 0)
{
flag = 0;
break;
}
}
}
if (flag)
cnt++;
}
cout << cnt;
}
소수가 아닐 경우 flag=0으로 설정하였다.
N이 1일 경우 flag=0이며,
그렇지 않으면 N이 2부터 N-1까지의 수로 나누어떨어지는지 확인한다.
하나라도 나누어떨어진다면 flag=0이다.
처음에 설정해둔 flag=1로 살아남았을 경우에 cnt++를 하였다.
다른 분들의 코드 리뷰
소수 : 약수가 1과 자신만 있는 자연수.
즉, 약수가 두 개다.
약수가 두 개일 경우 cnt++를 해주었다.
'문제를 풀자' 카테고리의 다른 글
[프로그래머스] 신고 결과 받기(C++) (0) | 2022.06.22 |
---|---|
[SWEA #8016] 홀수 피라미드(C++) (0) | 2022.05.31 |
[백준 #16563] 어려운 소인수분해(C++) (0) | 2022.05.31 |
[백준 #1929] 소수 구하기(에라토스테네스의 체)(C++) (0) | 2022.05.31 |
[백준 #1037] 약수(C++) (0) | 2022.05.30 |
댓글