Program LiczbyPierwsze

0

Dlaczego komunikat mówiący o tym, że liczba nie jest liczbą pierwszą wyświetla się nieskończoną ilość razy? Co w tym kodzie jest złego. Muszę użyć pętli while.

public class LiczbaPierwsza {

	public static void main(String[] args) {
		int liczba = 21;
		int dzielnik = 2;
		
		if (liczba % dzielnik == 0) {
			System.out.println("Liczba "+liczba+" nie jest liczbą pierwszą. Jest podzielna np. przez "+dzielnik+"");
		
		} else {
		
		while(dzielnik < liczba) {
			if (liczba % dzielnik == 0) {
				System.out.println("Liczba "+liczba+" nie jest liczbą pierwszą. Jest podzielna np. przez "+dzielnik+"");
			} else {
				dzielnik++;
		 System.out.println("Liczba jest liczbą pierwszą.");
		
	}

}}}}
1

Najpierw musisz sprawdzić wszystkie dzielniki, a dopiero potem pokazać czy jest podzielna czy nie - innymi słowy, zamiast System.out.println potrzebujesz tam machnąć na przykład czyPierwsza = false; i dopiero po pętli ifa sprawdzającego wartość tej zmiennej, który wyświetli adekwatny komunikat.
Poza tym dziwnie zbudowałeś tę pętlę - użyj fora.

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