素数を求める (ver.5)

明解C言語 入門編 > 5. 配列 >

素数を求める (ver.5)

Java
class Lesson042
{
    public static void main(String[] args) {

        int ptr = 0;
        int[] prime = new int[15];
        prime[ptr++] = 2;
        prime[ptr++] = 3;

        long counter = 0;

        for (int no = 5; no <= 30; no += 2)
        {
            int i = 1;
            int j = 0;
            while (true)
            {
                counter++;
                if (prime[i] * prime[i] > no) break;

                counter++;
                if (no % prime[i] == 0)
                {
                    j = 1;
                    break; // 割り切れるので、素数ではない
                }
                i++;
            }
            if (j == 0)
                prime[ptr++] = no; // 最後まで割り切れなかったので、素数
        }

        for (int i = 0; i < ptr; i++)
            System.out.printf("%d\n", prime[i]);

        System.out.printf("計算を行った回数:%d\n", counter);
    }
}

実行結果

L:\>java Lesson042
2
3
5
7
11
13
17
19
23
29
計算を行った回数:34