문제
풀이
소수 판별법을 이용해서 소수인 수의 개수를 세 주면 됩니다.
코드
Python
def is_prime(x: int) -> bool:
if x == 1:
return False
for i in range(2, int(x ** (1 / 2)) + 1):
if x % i == 0:
return False
return True
n = int(input())
answer = 0
for x in map(int, input().split()):
if is_prime(x):
answer += 1
print(answer)C++
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int x) {
if (x == 1)
return false;
for (int i = 2; i * i <= x; i++)
if (x % i == 0)
return false;
return true;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
int answer = 0;
while (n--) {
int x;
cin >> x;
if (isPrime(x))
answer++;
}
cout << answer;
return 0;
}Java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static Boolean isPrime(int x) {
if (x == 1)
return false;
for (int i = 2; i * i <= x; i++)
if (x % i == 0)
return false;
return true;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
StringTokenizer tk = new StringTokenizer(br.readLine());
int answer = 0;
for (int i = 0; i < n; i++)
if (isPrime(Integer.parseInt(tk.nextToken())))
answer++;
bw.write(answer + "");
bw.close();
}
}