문제

tier 소수 찾기

풀이

소수 판별법을 이용해서 소수인 수의 개수를 세 주면 됩니다. 은 소수가 아님에 유의합시다.

코드

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();
    }
}