문제 : https://www.acmicpc.net/problem/1978
1. 내 해답
// 입력한 수의 제곱근까지 for문을 돌려 소수일 경우 result 값을 1 증가시킨다.
// 입력한 수가 1이면 소수에서 제외하고(continue), 2인 경우 result 값을 1 증가시킨다.
#include <cstdio>
#include <cmath>
int main()
{
int n = 0, result = 0;
scanf("%d", &n);
for ( int i = 0 ; i < n ; i++ )
{
int a = 0, j = 2;
scanf("%d", &a);
if ( ( a == 1 ) || ( a == 2 ) )
{
if ( a == 2 ) result++;
continue;
}
for ( j = 2 ; j < int(sqrt(a)) + 1 ; j++ )
{
if ( a % j == 0 ) break;
}
if ( j == int(sqrt(a)) + 1 ) result++;
}
printf("%d", result);
return 0;
}
2. 다른 사람의 해답
// (입력된 수 - 1)까지 나눠 보면서 소수 여부를 판단한다.
#include<stdio.h>
int main()
{
int n,h=0,a,i;
scanf("%d", &n);
while (n--)
{
scanf("%d", &a);
for (i = 2; i < a; i++)
if ((a % i) == 0) break;
if (i == a) h++;
}
printf("%d", h);
}
# 처음 입력받는 수는 사용하지 않는다.
input()
A = list(map(int, input().split()))
count = 0
for n in A:
if n < 2: continue
# for-else 문 : for 문의 내용이 끝나면 else 문의 내용을 실행한다.
# break 되는 경우에는 else의 내용을 실행하지 않는다.
for k in range(2, int(n ** 0.5) + 1):
if not n % k:
break
else: count += 1
print(count)
'프로그래밍 > 알고리즘' 카테고리의 다른 글
백준 9063번 : 대지 (0) | 2024.04.22 |
---|---|
백준 2581번: 소수 (0) | 2024.03.31 |
백준 9506번: 약수들의 합 (1) | 2024.03.22 |
백준 2501번: 약수 구하기 (0) | 2024.03.20 |
백준 5086번: 배수와 약수 (0) | 2024.03.15 |