Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- struct potegi
- {
- int czynnik;
- int potega;
- };
- 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 nast_pierwsza(int n)
- {
- for(int i = n + 1; true; ++i)
- if(czy_pierwsza(i))
- return i;
- }
- int wynik(int n)
- {
- vector<potegi> czynniki;
- int czynnik = 2;
- int licznik;
- do
- {
- licznik = 0;
- while(n % czynnik == 0)
- {
- ++licznik;
- n /= czynnik;
- }
- if(licznik > 0)
- {
- potegi nowy;
- nowy.czynnik = czynnik;
- nowy.potega = licznik;
- czynniki.push_back(nowy);
- }
- czynnik = nast_pierwsza(czynnik);
- } while(n > 1);
- unsigned rozmiar = czynniki.size();
- int wynik = 1;
- for(unsigned i = 0; i < rozmiar; ++i)
- {
- czynniki[i].potega = (czynniki[i].potega - 1) / 7 + 1;
- for(int j = 0; j < czynniki[i].potega; ++j)
- wynik *= czynniki[i].czynnik;
- }
- return wynik;
- }
- int main()
- {
- int n;
- cin >> n;
- cout << wynik(n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement