losowanie z sprawdzeniem ile liczb to liczby pierwsze
Ostatnio zmodyfikowano 2017-05-20 07:50
gsmx98 Temat założony przez niniejszego użytkownika |
losowanie z sprawdzeniem ile liczb to liczby pierwsze » 2017-05-20 00:43:22 Witam mam już algorytm do losowania i mam algorytm do sprawdzania ale kleju brak i nie wiem jak to skleić razem.. zalezy mi na czasie bardzo <code>#include <time.h> #include <iostream> using namespace std; bool czy_pierwsza(int n) { if(n<2) return false; //gdy liczba jest mniejsza niż 2 to nie jest pierwszą for(int i=2;i*i<=n;i++) if(n%i==0) return false; //gdy znajdziemy dzielnik, to dana liczba nie jest pierwsza return true; } int main(void) { int zakres,*tab,ile_liczb,n; cout<<"podaj z ilu liczb chcesz losowac : "; cin>>zakres; tab=new int[zakres]; cout<<"podaj ile liczb chcesz losowac z zakresu od 1 do "<<zakres<<" : "; cin>>ile_liczb; time_t t; srand((unsigned) time(&t)); for (int n=0; n <zakres; n++) tab[n] = n+1; for (int n=0; n <ile_liczb; n++) { int k=rand()%zakres; swap (tab[n], tab[k]); }
cout<<"wylosowano:"<<endl;
for{(int n=0;n<zakres;n++)cout<< tab[n]<<endl; if(czy_pierwsza(n)) //lub czy_pierwsza(n)==1 cout<<"Liczba "<<n<<" jest pierwsza"<<endl; else cout<<"Liczba "<<n<<" nie jest pierwsza"<< endl; } delete [] tab; return 0; }</code> całość wygląda mniej wiecej tak proszę o pomoc zadanie na wczoraj! |
|
latajacaryba |
» 2017-05-20 02:43:25 [cpp] kod [/cpp] Gdzie dokladnie masz problem? Przekazujesz liczbe do funkcji i dostajesz true lub false. Ps. Algorytm troche slaby. Samą liczbe operacji mozna w nim zmniejszyc dwukrotnie czyms takim: If( liczba % 2 == 0 ) Return false;
For( int i = 3; i < liczba; i += 2 ) { If( liczba % i == 0 ) Return false; }
Ale masz blad, dokladnie przy zapisie If(int i = 2; i <= n; i++) Liczba zawsze jest podzielna przez sama siebie, a w petli 'i' moze byc rowne liczbie. Dlatego funkcja zawsze zwroci Ci true. Popraw na i < n |
|
karambaHZP |
» 2017-05-20 07:50:37 Nie trzeba sprawdzać wszystkich liczb. Wystarczy do pierwiastka kwadratowego z liczby. i * i <= liczba
I perwszy warunek liczba < 2 odrzuca liczby, w których nie znajdziemy liczb pierwszych. |
|
« 1 » |