MeehoweCK

Untitled

Oct 26th, 2020
813
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. struct potegi
  7. {
  8.     int czynnik;
  9.     int potega;
  10. };
  11.  
  12. bool czy_pierwsza(int n)
  13. {
  14.     if(n < 2)
  15.         return false;
  16.     for(int i = 2; i * i <= n; ++i)
  17.         if(n % i == 0)
  18.             return false;
  19.     return true;
  20. }
  21.  
  22. int nast_pierwsza(int n)
  23. {
  24.     for(int i = n + 1; true; ++i)
  25.         if(czy_pierwsza(i))
  26.             return i;
  27. }
  28.  
  29. int wynik(int n)
  30. {
  31.     vector<potegi> czynniki;
  32.     int czynnik = 2;
  33.     int licznik;
  34.  
  35.     do
  36.     {
  37.         licznik = 0;
  38.         while(n % czynnik == 0)
  39.         {
  40.             ++licznik;
  41.             n /= czynnik;
  42.         }
  43.         if(licznik > 0)
  44.         {
  45.             potegi nowy;
  46.             nowy.czynnik = czynnik;
  47.             nowy.potega = licznik;
  48.             czynniki.push_back(nowy);
  49.         }
  50.         czynnik = nast_pierwsza(czynnik);
  51.     } while(n > 1);
  52.  
  53.     unsigned rozmiar = czynniki.size();
  54.     int wynik = 1;
  55.     for(unsigned i = 0; i < rozmiar; ++i)
  56.     {
  57.         czynniki[i].potega = (czynniki[i].potega - 1) / 7 + 1;
  58.         for(int j = 0; j < czynniki[i].potega; ++j)
  59.             wynik *= czynniki[i].czynnik;
  60.     }
  61.     return wynik;
  62. }
  63.  
  64. int main()
  65. {
  66.     int n;
  67.     cin >> n;
  68.     cout << wynik(n);
  69.     return 0;
  70. }
RAW Paste Data