Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Liczby pierwsze pl.spoj.pl

Ostatnio zmodyfikowano 2014-11-27 21:19
Autor Wiadomość
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:
C/C++
#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;
            }
        } //for
       
    }
   
    return 0;
}
P-121572
NopeDotAvi
» 2014-11-27 21:19:17
Bo masz zły algorytm.

taki był by dobry:
C/C++
int n;
cin >> n;
for( int i = 2; i <= sqrt( n ); ++i )
{
    if( n % i == 0 ) //nie jest pierwsza
         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.
P-121576
« 1 »
  Strona 1 z 1