Javaによる素数判定メソッド

素数判定は競プロで頻出なのでメモとして残しておく。

プログラムの流れとしては

  • 1と2そのものは素数なので1or2ならば素数
  • 偶数ならnot素数
  • 3以上の奇数で割り切れたらnot素数(xが合成数ならば、√x以下の約数を持つため)
  • ここまでの条件に当てはまらないなら素数

というかんじ。(当方、初心者のためもっといい方法あれば教えてくださいm(__)m)

    static boolean isPrime(int num) {
        if (num == 1 || num == 2) return true;
        if (num % 2 == 0) return false;

        for (int i = 3; i < Math.sqrt(num); i += 2)
            if (num % i == 0) return false;

        return true;

普通に各所でまとめられていますが再掲。