Ten program wcale nie sprawdza czy liczba jest pierwsza. Sprawdź taki test:
10
1
2
3
4
5
6
7
8
9
10
Zanim napiszesz "TAK" musisz sprawdzić WSZYSTKIE możliwe dzielniki. Obecnie w pętli sprawdzasz podzielność przez 2 i od razu z niej wychodzisz. Poza tym 2 jest liczbą pierwszą, a dla 3 nie wypisze się nic. Możesz zastosować zmienną bool np:
#include <cmath>
#include <iostream>
int main() {
int test;
std::cin >> test;
while (test--) {
int liczba;
std::cin >> liczba;
bool isPrime = true;
if (liczba < 2) {
isPrime = false;
} else if (liczba == 2) {
isPrime = true;
}
for (int i = 2; i <= std::sqrt(liczba); i++) {
if (liczba % i == 0) {
isPrime = false;
break;
}
}
std::cout << (isPrime ? "TAK" : "NIE") << "\n";
}
}