#include <iostream> #include <cstdlib> #include <cmath> #include <ctime> #include <iomanip> void losuj(int t[]); //sortowanie babelkowe void wypisz(int t[]); void babelkowe(int t[]); int nwd(int a, int b); //rekurencja int nwd2(int a, int b); //iteracja int nww(int a, int b); void generuj (int T[], int n); // sito bool czy_pierwsza(int n); const int N=100; using namespace std; int main(){ char wybor; do{ cout << "1. SORTOWANIE BABELKOWE \n"; cout << "2. NWW \n"; cout << "3. NWD REKURENCYJNIE \n"; cout << "4. NWD ITERACJA Z MODULE I ODEJMOWANIEM \n"; cout << "5. SITO ERATOSTENESA ITERACJA \n"; cout << "6. BADANIE CZY LICZBA JEST PIERWSZA \n"; cout << "0. WYJSCIE Z PROGRAMU \n"; cin >> wybor; switch(wybor){ case '1': { srand(time(NULL)); cout << "Sortowanie metoda babelkowa!!!\n\n"; int tab[N]; losuj(tab); cout << "Przed sortowaniem: \n"; wypisz(tab); babelkowe(tab); cout << "\nPo sortowaniu: \n"; wypisz(tab); system ("pause"); break; } case '2': { int p; int q; cout << "Podaj n i m:"; cin >> p >> q; cout << nww(p,q); system("pause"); break; } case '3': { unsigned a, b; cout << "Podaj a i b"; cin >> a >> b; cout << "nwd(" << a << "," << b << ") = " << nwd(a, b) << endl; system ("pause"); break; } case '4': { int a,b; cout<<"Podaj liczbe a: "; cin>>a; cout<<"Podaj liczbe b; "; cin>>b; cout << nwd2(a, b) << endl; system ("pause"); break; } case '5': { // sito Eratostenesa (iteracja) system ("pause"); break; } case '6': { int n; cout<<"Podaj liczbe: "; cin>>n; if(czy_pierwsza(n)) cout<<"Liczba "<<n<<" jest pierwsza"<<endl; else cout<<"Liczba "<<n<<" nie jest pierwsza"<<endl; system ("pause"); break; } case '0': cout << "koniec"; break; default: cout << "Blad"; } system("cls"); }while(wybor!='k' && wybor!='K'); return 0; } void losuj(int t[]){ for(int i=0; i<N; i++) t[i]=100+rand()%(999-100+1); } void wypisz(int t[]){ for(int i=0; i<N; i++){ if (i%10==0) cout << endl; cout << setw(5) << t[i]; } } void babelkowe(int t[]){ int i=0; int j=0; while(i<N){ j=0; while (j<N-1-i){ if (t[j]>t[j+1]) swap(t[j],t[j+1]); j++; } i++; } } int nwd(int a, int b){ //rekurencja if (b==0) return a; return nwd(b,a%b); } int nww(int a, int b){ return a*b/nwd(a,b); } void generuj (int T[], int n) { int i, m; for (i=2;i<=n;i++) T[i]=1; i=2; while (i<=n) { m=2*i; while (m<=n) { T[m]=0; m+=i; } do i++; while (T[i]==0 && i<=n); } } int nwd2 (int a, int b) //iteracja { while (a!=b) if (a>b) a-=b; else b-=a; return a; } bool czy_pierwsza(int n) { if(n<2) return false; for(int i=2;i*i<=n;i++) if(n%i==0) return false; return true; }