[BOJ]1978小数点を探す


質問する


プログラムを書き出して、与えられたN個の数の中で何個が小数であるかを見つけます.

入力


1行目の数字はNです.Nは100以下である.次はN個、数は1000以下の自然数です.

しゅつりょく


与えられた数のうちの少数の数を出力します.

入力例1


4 1 3 5 7

サンプル出力1


3

に答える


この数字nが素数であるかどうかをチェックするときは、2~nの平方根に分けてチェックします.

コード#コード#

import java.io.*;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;

        int n = Integer.parseInt(br.readLine());

        int curNum, count = 0;
        boolean isPrimeNum;

        int[] arr = new int[n];
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }

        for (int i = 0; i < n; i++) {   // 횟수
            curNum = arr[i];
            isPrimeNum = true;
            if (curNum < 2) continue;
            if (curNum == 2) {
                count++;
                continue;
            }
            for (int j = 2; j <= Math.sqrt(curNum); j++) {
                if (curNum % j == 0) {
                    isPrimeNum = false;
                    break;
                }
            }
            if (isPrimeNum) count++;
        }

        bw.write(Integer.toString(count));
        bw.flush();
    }
}