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 ==
, 1 jeśli
valthis > 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.