Program do wyświetlania liczb pierwszych

0

Witam, napisałem program który ma wypisywać liczby które nie są liczbami pierwszymi. Gdy w drugiej pętli for: j <= i, wtedy dostaje błędne wyniki.

run napisał(a)

liczba 3 nie jest liczba pierwsza
liczba 4 nie jest liczba pierwsza
liczba 6 nie jest liczba pierwsza
liczba 8 nie jest liczba pierwsza
liczba 9 nie jest liczba pierwsza
liczba 10 nie jest liczba pierwsza
liczba 12 nie jest liczba pierwsza
liczba 14 nie jest liczba pierwsza
liczba 15 nie jest liczba pierwsza
liczba 16 nie jest liczba pierwsza
liczba 18 nie jest liczba pierwsza
liczba 20 nie jest liczba pierwsza
BUILD SUCCESSFUL (total time: 0 seconds)

Liczby 2 nie wypisało i wypisało że liczba 3 nie jest liczba pierwsza. Natomiast gdy: j < i program działa dobrze z założeniem, wypisuje wszystkie liczby które nie są pierwsze do n.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaliczbypierwsze;

/**
 *
 * @author marcin
 * program wypisuje liczby ktore nie sa pierwsze
 */
public class JavaLiczbyPierwsze {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int licznik = 0;
        int n = 1000;
        for (int i = 2; i <= n; ++i) {
            for (int j = 1; j < i; ++j) {
                if (i % j == 0) {
                    licznik++;
                }
                if (licznik > 2) {
                    System.out.println("liczba " + i + " nie jest liczba pierwsza");
                    licznik = 0;
                    break;
                }
            }
        }
    }
}
run napisał(a)

liczba 4 nie jest liczba pierwsza
liczba 6 nie jest liczba pierwsza
liczba 8 nie jest liczba pierwsza
liczba 10 nie jest liczba pierwsza
liczba 12 nie jest liczba pierwsza
liczba 14 nie jest liczba pierwsza
liczba 15 nie jest liczba pierwsza
liczba 16 nie jest liczba pierwsza
liczba 18 nie jest liczba pierwsza
liczba 20 nie jest liczba pierwsza
BUILD SUCCESSFUL (total time: 0 seconds)

dodanie znaczników <quote> dla wyników - fp

0

No nie dziala dobrze bo taka liczba 9 nie jest liczba pierwsza, a nie jest wypisana. Testow pierwszosci jest bardzo duuuzo. Metody propabilistyczne i deterministyczne. Najprostsza metoda jest sprawdzanie podzielnosci od i=2 do i<sqrt(n). Jesli liczba jest podzielna przez jakakolwiek z tego przedzialu to nie jest pierwsza. Do tego masz jakies testy fermata itp. ktore z pewnym prawdopodobienstem stwierdzaja pierwszosc liczby.

http://ideone.com/zhtbOz

0

poprawiłem

 /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaliczbypierwsze;

/**
 *
 * @author marcin
 * program wypisuje liczby ktore nie sa pierwsze
 */
public class JavaLiczbyPierwsze {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int licznik;
        int n = 20;
        for (int i = 2; i <= n; ++i) {
            licznik = 0;
            for (int j = 1; j <= i; ++j) {
                if (i % j == 0) {
                    licznik++;
                }
                if (licznik > 2) {
                    System.out.println("liczba " + i + " nie jest liczba pierwsza");
                    licznik = 0;
                    break;
                }
            }
        }
    }
}
run napisał(a)

liczba 4 nie jest liczba pierwsza
liczba 6 nie jest liczba pierwsza
liczba 8 nie jest liczba pierwsza
liczba 9 nie jest liczba pierwsza
liczba 10 nie jest liczba pierwsza
liczba 12 nie jest liczba pierwsza
liczba 14 nie jest liczba pierwsza
liczba 15 nie jest liczba pierwsza
liczba 16 nie jest liczba pierwsza
liczba 18 nie jest liczba pierwsza
liczba 20 nie jest liczba pierwsza
BUILD SUCCESSFUL (total time: 0 seconds)

dodanie znacznika <quote> dla wyjścia - fp

1 użytkowników online, w tym zalogowanych: 0, gości: 1