Zbudowałem jak mi się wydawało program do określania czy podana liczba jest liczbą pierwszą. Po wpisaniu liczby wynikiem ma być komunikat 'NIE' gdy liczba nie jest pierwszą, 'TAK' gdy liczba jest liczbą pierwszą.
Generalnie liczby pierwsze są rozpoznawane poprawnie :-) Jednak w kodzie mam 2 pętle 'for' które mnie nie słuchają. Przykład: n=6 pozwala na wprowadzenie tylko 5 liczb, co więcej, jeśli pierwsza liczba jest np. 2 cyfrowa to program podaje wynik i od razu się kończy :-(.
Gdzie jest błąd?
#include <iostream> #include <cstdlib> using namespace std; int n,m=0; int liczba; int main() { cin>>n; // ile liczb będzie wprowadzanych for(int i=1; i<=n; i++) // licznik decydujący ile liczb mozna wprowadzić { cin>>liczba; // kolejne wprowadzane liczby for (int j=1; j<=liczba; j++) // licznik decydujący ile liczb mozna wprowadzić { if (((liczba%j==0) && (j!=liczba) && (liczba!=2)&& (j!=1)) || (liczba==1)) { m++; // NIE } } if(m>0) cout<<"NIE"<<endl; else cout<<"TAK"<<endl; m=0; } return 0; }