問題012

6以下の正の整数nを入力し、n以下の素数がいくつあるかを数えて出力して終了するプログラムを作成してください。
ただし、素数とは1と自分自身でしか割り切れない正の整数のうち1をのぞいたものをいいます。
たとえば10以下の素数は、2,3,5,7です。

入力

n(整数)

出力

n以下の素数の個数(整数)

入力例

10

出力例

4

考え方

ここは、素数であるかを調べる関数(サブルーチン、メソッド)を作りましょう。
問題の最後に、素数とは1と自分自身でしか割り切れないとあります。
よって、2 〜 自分自身-1 のうちどれか1つでも割り切れたらその数は素数ではない、ということです。

関数ができたら、2〜nでその関数が真を返す数がいくつあるかを数えます。



Java
//
//A012.java
//

import java.io.*;

public class A012{
    public static void main(String[] args)throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        int n=Integer.parseInt(br.readLine());
        int count=0;

        //2から始めてもいいかな。
        for(int i=2;i<=n;i++){
            if(isSosu(i)){
                count++;
            }
        }

        System.out.println(count);
        br.close();
    }

    //素数かどうか調べる
    private static boolean isSosu(int target){
        //2からtarget-1のどれかで割り切れたら素数でない
        for(int i=2;i<target;i++){
            if(target%i==0){
                return false;
            }
        }
        return true;
    }

}

正しくゲームをするページ>パソコン甲子園攻略>ココ