Liczby pierwsze
Ostatnio zmodyfikowano 2013-11-30 22:09
Tym3k Temat założony przez niniejszego użytkownika  | 
Liczby pierwsze » 2013-11-30 17:22:06 #include <iostream> #include <conio.h> #include <ctime> #include <cstdlib> #include <math.h> using namespace std;
  void uzupelnij_tablice( int tablica[], int ile, int min, int max ) {          srand( time( 0 ) );          for( int i = 0; i < ile; i++ )     {         tablica[ i ] = rand() %( max - min + 1 ) + min;         cout << tablica[ i ] << ",";                       }     cout << endl << endl; }
 
 
  int liczby_pierwsze( int tablica[], int ile, int max ) {     int x, i;                    for( int j = 0; j < ile; j++ )     {         if( tablica[ j ] > max )              max = tablica[ j ];              }     cout << "max: " << max << endl << endl;                    int zakres_gorny;     zakres_gorny = int( sqrt( max ) );     cout << zakres_gorny;                                   for( int i = 2; i < zakres_gorny; i++ )     {         if( tablica[ i ] != 0 )         {             x = i + i;             while( x <= ile )             {                 tablica[ x ] = 0;                 x += i;             }         }     }     for( i = 2; i < ile; i++ )     if( tablica[ i ] != 0 )     {         cout << "liczby pierwsze: " << tablica[ i ] << endl;              } }
 
 
 
 
 
  int main() {     int dlugosc;     int tab[ dlugosc ];               do     {         cout << "wybierz dluggosc tablicy od 10 do 20" << endl;         cin >> dlugosc;     }     while( dlugosc < 10 || dlugosc > 20 );          uzupelnij_tablice( tab, dlugosc, 1, 99 );     liczby_pierwsze( tab, dlugosc, 1 );               getch();           }
  Czasami do liczby pierwszej dodaje jakby 1 lub 2, ktoś może widzi błąd? w sensie, gdy na przykład podam 10 liczb: 83 49 79 62 94 89 2 3 35 24 Podaje z tego liczby pierwsze 79 62 89 3  62 nie jest liczbą pierwszą tylko 61 i właśnie, zawsze się trafi jedna lub więcej takich błędnych wyników które są powiększone/pomniejszenie o 2 lub 1.  | 
 | 
pekfos  | 
» 2013-11-30 19:15:37 Algorytm sprawdzający jest zły i niepoprawnie tworzysz tablicę tab.
   | 
 | 
Tym3k Temat założony przez niniejszego użytkownika  | 
» 2013-11-30 20:47:23 Algorytm napisze inaczej, ale mógłbyś mi powiedzieć co źle zrobiłem z tablicą?  | 
 | 
pekfos  | 
» 2013-11-30 20:48:43 Rozmiar tablicy musi być stałą, znaną w czasie kompilacji.  | 
 | 
Tym3k Temat założony przez niniejszego użytkownika  | 
» 2013-11-30 22:09:59 #include <iostream> #include <conio.h> #include <ctime> #include <cstdlib> #include <math.h>
  using namespace std;
  const int dlugosc = 100; int tab[ dlugosc ];
 
  int uzupelnij_tablice( int tablica[], int ile, int min, int max ) {          srand( time( 0 ) );          for( int i = 0; i < ile; i++ )     {         tablica[ i ] = rand() %( max - min + 1 ) + min;         cout << tablica[ i ] << ",";                       }     cout << endl << endl;      }
  bool czy_pierwsza( int l ) {     for( int i = 2; i < l; i++ )     {         bool wynik = true;         for( int i = 2; i < l; i++ ) {             if( l > 2 )             if( l % i == 0 )             { wynik = false;                 break; }         }         return wynik;     } } int powtorka( int l ) {     int s = 0;     for( int i = 0; i < l; i++ ) {         if( l == tab[ i ] ) {             s = s + 1;         }     }     return s; }
 
 
 
 
 
 
 
  int main() {               uzupelnij_tablice( tab, dlugosc, 1, 99 );     for( int i = 0; i < dlugosc; i++ ) {         int l = tab[ i ];         if( czy_pierwsza( tab[ i ] ) )                       cout << "Liczba pierwsza: " << tab[ i ] << " wystapila: " << powtorka( tab[ i ] ) << " razy" << endl;                       }          getch();      }
  zrobiłem!  | 
 | 
|  « 1 »  |