Zielony Smok - logo witryny

BigInteger (5) – liczby pierwsze i pozostałe metody

boolean isProbablePrime(int certainty)

Zwraca false jeśli liczba jest (z pewnością) złożona, true jeśli prawdopodobnie jest pierwsza.

Jeśli certainty ≤ 0, metoda zwraca true.

certainty określa zakładany stopień pewności pierwszości liczby.

Jeśli metoda zwróci true, to prawdopodobieństwo p, że BigInteger jest liczbą
pierwszą przekracza 1-(1/2)certainty. Im większe certainty, tym większy stopień
pewności, tym dłuższy czas wykonywania metody.

nextProbablePrime()

Zwraca pierwszą liczbę większą od this, która jest prawdopodobnie liczbą pierwszą.
Prawdopodobieństwo, że liczba jest złożona, nie przekracza 2-100.

probablePrime(int bitLength, Random rnd)

Zwraca liczbę, która jest prawdopodobnie pierwsza, o podanej bitLength. Prawdopodobieństwo, że
liczba jest złożona nie przekracza 2-100.

rnd – źródło losowych bitów używanych do wyboru kandydatów do testowania na pierwszość.

Klasy

Klasa BigInt14.java
package java_math_biginteger;

import java.math.*;
import java.util.*;

public class BigInt14 {
    public static void main(String[] args) {
        BigInteger p1 = BigInteger.probablePrime(128, new Random(1234567890));
        Util.print(p1);
        BigInteger p2 = p1.nextProbablePrime();
        Util.print(p2);
        boolean p3 = p1.add(new BigInteger("150")).isProbablePrime(1000);
        Util.print(p3);

    }
}

Po uruchomieniu otrzymujemy na konsoli:

311594231403583751664199366166030293037
311594231403583751664199366166030293187
true

BigInteger – pozostałe metody

boolean equals(Object val)

Zwraca true jeśli obiekty są równe, false w przeciwnym przypadku.

int compareTo(BigInteger val)

Metoda porównująca. Zwraca -1 jeśli this < val, 0 jeśli this ==
val
, 1 jeśli this > val.

Możemy ją wykorzystać do utworzenia metod porównujących (Klasa BigInt15.java):

 public static boolean wiekszy(BigInteger f, BigInteger s) {
        return (f.compareTo(s) > 0);
    }

    public static boolean rowny(BigInteger f, BigInteger s) {
        //return (f.compareTo(s) == 0)
        return f.equals(s);
    }

    public static boolean mniejszy(BigInteger f, BigInteger s) {
        return (f.compareTo(s) < 0);
    }

Możemy też użyć innych operatorów porównania: >=, !=, <= do
uzyskania odpowiednich metod.