Pagini recente » Cod sursa (job #2805585) | Cod sursa (job #1537859) | Cod sursa (job #29733) | Cod sursa (job #2827581) | Cod sursa (job #1802629)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("frac.in");
ofstream g ("frac.out");
unsigned long N , P , phi , copie , a , rest , cat , pozitie , interval , nr , nr_phi , x , y , r;
int main()
{
f >> N >> P;
phi = N; copie = N;
while (copie != 1) { a = 2;
while (copie % a != 0) a++;
phi = (phi / a)*(a - 1);
while (copie % a == 0) copie = copie / a;
}
rest = P % phi; cat = P / phi;
if (rest == 0) { interval = cat; pozitie = phi; }
else { interval = cat + 1 ; pozitie = rest; }
nr_phi = 1; nr = 2;
while (nr_phi < pozitie) {
x = nr; y = N;
r = y % x;
while (r != 0) { y = x; x = r; r = y % x; }
if (x == 1) nr_phi++;
nr++;
}
nr--;
g << nr + (interval - 1) * N;
return 0;
}