
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.
