Czy ta liczba jest pierwsza? Algorytm sprawdzający w języku Java. Teoria liczb #2

package pl.am.liczby.pierwsze;

public class LiczbyPierwsze {

    public static int iloscDzielnikow4(long liczba) {
        if (liczba == 1) {
            return 1;
        }
        int ilosc = 2;
        double max = Math.sqrt(liczba);
        for (long i=2; i<=max; i++) {
            if (liczba%i == 0) {
                long wynikDzielenia = liczba/i;
                if (i == wynikDzielenia) {
                    ilosc++;
                } else {
                    ilosc += 2;
                }

            }
        }

        return ilosc;
    }

    public static boolean czyPierwsza(long liczba) {
        if (liczba<2) {
            return false;
        }

        return iloscDzielnikow4(liczba) == 2;
    }

    public static boolean czyPierwsza2(long liczba) {
        if (liczba<2) {
            return false;
        }

        double max = Math.sqrt(liczba);
        for (long i=2; i<=max; i++) {
            if (liczba%i == 0) {
                return false;
            }
        }

        return true;
    }

    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        for (int i=1000000; i<2000000; i++) {
            if (czyPierwsza2(i)) {
                System.out.println(i);
            }
        }
        long stop = System.currentTimeMillis();
        long czas = stop - start;
        System.out.println("czas = " + czas);
    }
}

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *