BigInteger – liczby pierwsze

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/sup>.

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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *