Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- using namespace std;
- 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;
- }
- int silnia(int n)
- {
- if(n == 0) // tu musi byc zero, bo jezeli uzytkownik poda 0, to wynik nie bedzie poprawny (silnia z zera to 1); niektorzy uwazaja zero za liczbe naturalna, tak swoja droga :)
- return 1;
- else
- return n * silnia(n - 1); // rekurencyjnie
- }
- int suma(int n)
- {
- int sum = 0;
- for(int s = n - 1; s > 0 ; s--) // bardziej klarownie, jezeli policzymy "od tylu", ale to juz kwestia gustu
- sum += s;
- // drobna uwaga: mozemy to tez krotko (bez pomocy petli) policzyc przy uzyciu wzoru na ciag arytmetyczny (poziom szkoly sredniej)
- return sum; // zwracamy sume
- }
- int NWD1024(int n) // tutaj nie potrzeba wiele komentarza
- {
- int a = n, b = 1024;
- while(a != b)
- if(a > b)
- a -= b; // a = a - b
- else
- b -= a; // b = b - a
- return a;
- }
- int main()
- {
- int n;
- cout << "Podaj liczbe naturalna: " << endl;
- cin >> n;
- if(n <= 0) // robimy program "user-proof" - nie chcemy operowac na niepoprawnych danych :)
- cout << "nie podales liczby naturalnej, nie wiem co z tym zrobic :/" << endl;
- else if( czy_pierwsza(n) )
- cout << "Liczba " << n << " jest pierwsza" << endl; // tutaj jedna komenda "pod" if-em, wiec nie musimy uzywac klamerek
- else if( n % 2 == 0 )
- // nie robimy dodatkowego warunku, czy liczba jest rozna od 2 -> sprawdza to warunek if( czy_pierwsza(n) )
- // (2 jest liczba pierwsza, wiec gdy n=2 zostanie wykonane to co pod wspomnianym warunkiem, to co ponizej - nie)
- { // tutaj juz sa trzy komendy "pod" if-em, wiec musimy uzyc klamerek
- int liczba = NWD1024(n); // liczymy najwiekszy wspolny dzielnik
- cout << "Najwiekszy wspolny dzielnik liczb " << n << " i 1024 to: " << liczba << endl;
- cout << "Silnia tej liczby wynosi " << silnia(liczba)<< endl; // liczymy silnie z NWD(n, 1024)
- }
- else
- cout << "Suma wszystkich liczb mniejszych od " << n <<" = " << suma(n) <<endl;
- // no i po kazdym sprawdzonym warunku nie dodawaj exit(0)
- // po co konczyc program, skoro chcemy zobaczyc, co nam wyswietli? :)
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement