Liczby pierwsze pl.spoj.pl
Ostatnio zmodyfikowano 2014-11-27 21:19
ziken47 Temat założony przez niniejszego użytkownika |
Liczby pierwsze pl.spoj.pl » 2014-11-27 21:01:56 Witam. Mam problem z zrobieniem tego zadania gdyż nie wiem gdzie jest błąd (tak mi ich system wyświetla). Oto program: #include <iostream> using namespace std; int sprawdz( int & liczba ) { do { cin >> liczba; } while( liczba <= 0 || liczba > 100000 ); return liczba; } int sprawdzv2( int & liczba ) { do { cin >> liczba; } while( liczba <= 0 || liczba > 10000 ); return liczba; } int main() { int ilerazy, liczba; sprawdz( ilerazy ); for( int a = 1; a <= ilerazy; a++ ) { sprawdzv2( liczba ); for( int a = 1; a <= liczba; a++ ) { if( liczba % 2 == 0 || liczba % 3 == 0 || liczba % 5 == 0 || liczba == 1 ) { if( liczba == 3 || liczba == 5 ) { cout << "tak" << endl; break; } cout << "nie" << endl; break; } else { cout << "tak" << endl; break; } } } return 0; }
|
|
NopeDotAvi |
» 2014-11-27 21:19:17 Bo masz zły algorytm. taki był by dobry: int n; cin >> n; for( int i = 2; i <= sqrt( n ); ++i ) { if( n % i == 0 ) return false; }
wystarczy ze wsadzisz to do funkcji bool, która ma taką pętlę, a po pętli dasz return true; bo jeżeli nie zwróci fałszu pętla to funkcja pójdzie dalej a tam już koniec czyli jest pierwsza. Spróbuj to zrobić, jak nie będziesz w stanie to napisz. |
|
« 1 » |