Proszę o podpowiedź, gdzie jest błąd
int liczba=6;
int i=1;
int a=1;
while(i<=liczba)
{System.out.print("\nLiczba " + i + ", liczby z przedziału podzielne przez tę liczbę: ");
while(a<=liczba)
{if(a%i==0){System.out.print(a + " ");};a++; };
i++;}
1 - A ja trochę tego nie rozumiem, czemu to nie działa, bo przecież jest a++ w drugim while to ta wartość zmiennej a chyba nie powinna pozostawać stała
2 - Dlaczego w ifie jest a%i, a nie i%a?
1 - Hmm, mam wrażenie, że w poprzednim komentarzu udzieliłem odpowiedzi na pytanie co tam jest nie tak ;) a się zmienia, ale właśnie nigdy nie wraca na wartość równą 1.
2 - Bo w przypadku kodu napisanego przez koleżankę a jest dzielną, a i jest dzielnikiem.
1 - Czyli ten początkowy kod koleżanki sprawdza po kolei dzielne i je odpowiednio wypisuje, ale jakby bez powtórzeń tak?
On wypisuje te dzielne, ale niestety tylko dla pierwszej liczby (dla jedynki). Po każdorazowym ustawieniu następnie a = 1 już będzie działało to poprawnie.
W wewnętrznej pętli każdorazowo zwiększana jest wartość a, natomiast nie jest ona nigdzie z powrotem ustawiana na wartość 1 przy kolejnym wejściu do pętli zewnętrznej. Czyli po pierwszym obejściu pętli wewnętrznej a = 7 i rozpoczyna się drugi obieg pętli zewnętrznej, ale a dalej zostaje równe 7, dlatego potem nic nie jest wypisywane ;)
Trzeba więc na początku ciała pętli zewnętrznej ustawić z powrotem a = 1 i będzie ok :)