Nie rozumiesz co robisz:
Bierzesz liczbę a = 9.
- Sprawdzasz czy liczba 9 jest mniejsza od 2, nie jest więc idziemy dalej
- Sprawdzasz czy liczba 9 jest równa 2, nie jest, wiec idziemy dalej
- Zaczynamy pętlę
3.1.0 i = 2
3.1.1 sprawdzasz czy a(9) jest podzielna przez i(2), wychodzi, że nie jest podzielna, więc wypisujesz TAK. Wypisałeś ze liczba 9 jest liczba pierwszą. Jest? Oczywiscie ze nie jest, bo w kolejnym przejścu pętli:...
3.2.0 i==3
3.2.1 sprawdzasz czy a(9) jest podzielna przez i(3), wychodzi, że jest podzielna, więc wypisujesz NIE. Teraz wypisałeś że nie jest liczba pierwszą. Ale wcześniej napisałeś ze jest, wiec jak, jest czy nie jest?
3.3.0 i==4
3.3.1 sprawdzasz czy a(9) jest podzielna przez i(4), wychodzi, że nie jest podzielna, więc wypisujesz TAK. Teraz wypisałeś że jest liczba pierwszą. Ale wcześniej napisałeś ze nie jest a jeszcze wcześniej, że też jest, wiec jak, jest czy nie jest? Dla jednej liczby a=9 dostałeś 2 odpowiedzi że jest liczbą pierwszą i jedna, że nie jest.
Konkluzja. Najpierw musisz przelecieć cały zakres od 2 do sqrt(a) i NIE WYPISYWAĆ tylko na ustawiać sobie jakiegoś boola na false, zawsze jak reszta z dzielenia będzie 0. Potem, po przeleceniu całego fora na końcu po forze sprawdzasz, czy bool jest true czy false i DOPIERO WTEDY wypisujesz informację czy pierwsza czy nie.