Javaでの素数判定&Streamを使ったエラトステネスの篩

スポンサードリンク



先日参加したAtCoderでも必要になったので、素数判定処理と、エラトステネスの篩を使った素数列挙処理を作りました。

列挙のほうはコレだとprintしているだけなので、好みのデータ型に持たせる必要があります。

素数判定処理&エラトステネスの篩


// ルートxまで
public boolean isPrime(int x) {
    for (int i = 2; i*i <= x; i++) {
        if (x % i == 0) {
            System.out.println(x + "is divisible by " + i);
            return false;
        }
    }
    return true;
}

// 指定したx以下の素数をリストアップする
public void sieveOfEratosthenes(int x) {
    IntStream.rangeClosed(2, x)
            .filter(i -> IntStream.rangeClosed(2, (int)Math.sqrt(i))
                    .allMatch(j -> i%j !=0))
            .forEach(n -> {
                System.out.println(n);
            });
}

参考

スポンサードリンク







ABOUTこの記事をかいた人

都内でテストエンジニア&ブロガーをやっている@yoshikiitoです。 ソフトウェアエンジニアの学習方法や成長するための考え方、会社に依存せず自分の力で生きていけるエンジニアになる方法などについて興味があります。 こういった方法や考え方、自分が試したことなどをブログを通じて発信します。 仕事は主にソフトウェアテストやテスト自動化。 趣味は浦和レッズと読書と技術書を買って積むこと。 技術評論社から本を出すのが夢