Liczby pierwsze - kod źródłowy C++
#include <iostream.h> #include <conio.h> #include <math.h> main() { clock_t czas_start, czas_koniec, czas_caly ; int zakres,i,j,x; //deklareacja zmiennych o nazwach zakres, i , j, x cout<<"Podaj zakres: ";//Wypisuje na ekranie podaj zakres: cin>>zakres;//pobieram wpisane ciag do zmiennej zakres int tablica_pierwszych[zakres+1];//deklaruje zmienną o nazwie tablica_pierwszych o wielkości zakres plus 1 czas_start = clock(); //pobranie aktualnego czasu //-------------poczatek liczenia---------------- for (i=2; i <= zakres; i++) //wykonuję pętlę for od i=2 do i = zakres i po każdym wykonaniu pętli i zwiększa się o 1 { tablica_pierwszych[i]=1;//wprowadzamy do tablicy tablica_pierwszych[] dla kazdej liczby z podanego zakresu wartosc 1 } for (i=2; i < sqrt(zakres); i++)//petla od 2 do pierwiastek z podanego zakresu { if(tablica_pierwszych[i]==1)//jesli tablica tablica_pierwszych o indeksie i równa jest jeden to wykonaj poniższe instrukcje { for (j=2*i; j<=zakres; j+=i) //*w petli od (2 * i) do podanego zakresu tablice tablica_pierwszych[j] oznaczamy wartoscia 0 czyli ze nie jest liczba pierwsza i zmienna j zwiększana jest o j+i { tablica_pierwszych[j]=0;//oznaczamy że dana liczba nie jest liczbą pierwszą co wiemy z założenia a nie sprawdzamy } } } for (i=2; i<=zakres; i++) //pętla od i = 2 do i = zakres i po każdym wykonaniu zwiększamy i o wartość 1 { if (tablica_pierwszych[i]==1) //jesli tablica tablica_pierwszych o indeksie i równa jest jeden { cout<<i<<"\n"; //to pokazuj wynik na ekranie enterowany } } //-------------koniec liczenia --------------- delete tablica_pierwszych; //usuwam zmienną tablica_pierwszych czas_koniec = clock(); //pobranie aktualnego czasu czas_caly = czas_koniec - czas_start; cout << "Czas obliczen = " << czas_caly / 1000 << " s, dokladniej = " << czas_caly << " mili \n\n"; system("pause"); return 0; //zwraca informacje dla systemu że program zakończył swoje działanie poprawnie (nie zawiesił się) }
Dział: