1前書き

まず、同じ基本理論を見てみましょう。

簡単に言えば、1で割り切れる数とその数字自体で割り切れる数は、素数です。素数でない数は合成数と呼ばれます。そしてナンバーワンは素数でも複合でもありません。

この記事では、Javaで数字の素数をチェックするさまざまな方法について説明します。

** 2カスタム実装

このアプローチでは、2から(数の平方根)の間の数が正確に数を割り切れるかどうかをチェックできます。

次のロジックは、数が素数の場合

true

を返します。

public boolean isPrime(int number) {
    return number > 2
      && IntStream.rangeClosed(2, (int) Math.sqrt(number))
      .noneMatch(n -> (number % n == 0));
}


3

BigInteger


を使用する

BigIntergerクラスは、一般に大きなサイズの整数、すなわち64ビットより大きい整数を格納するために使用される。

int



long

の値を処理するための便利なAPIをいくつか提供しています。

これらのAPIの1つが

isProbablePrime

です。このAPIは、数値が間違いなくコンポジットである場合は

false

を返し、素数である可能性がある場合は

true

を返します。大きな整数を扱うときには、これらを完全に検証するのはかなり集中的な計算になる可能性があるので便利です。

public boolean isPrime(int number) {
    BigInteger bigInt = BigInteger.valueOf(number);
    return bigInt.isProbablePrime(100);
}


4 Apache Commons Math

を使う

Apache Commons Math APIは__org.apache.commons.math3.primes.Primesという名前のメソッドを提供しています。これは数値の素数性をチェックするために使用します。

まず、

pom.xml

に次の依存関係を追加して、Apache Commons Mathライブラリをインポートする必要があります。

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-math3</artifactId>
    <version>3.6.1</version>
</dependency>

commons-math3の最新版はhttps://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22commons-math3%22[here]にあります。

メソッドを呼び出すだけでチェックを実行できます。

Primes.isPrime(number);


5結論

この簡単な記事では、数の素数をチェックする3つの方法を見ました。

このためのコードはパッケージにあります。

com.baeldung.primechecker


over on
Github。