Pagini recente » Cod sursa (job #1594193) | Cod sursa (job #1054726) | Cod sursa (job #571254) | Cod sursa (job #1869774) | Cod sursa (job #2282752)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
int gcd(int a, int b)
{
if (a==0) return b;
return gcd(b%a, a);
}
int prim(int n)
{ int k;
k=2;
for(int i=2; i<=sqrt(n); i++)
{
if(n%i==0) k=1;
}
return k;
}
int main()
{
ifstream fin("frac.in"); ofstream fout("frac.out");
long long n,i,j=0,k,Euler,m,p,q,u[12];
cin>>n;Euler=n;k=n;
for(i=2;n>1;i++) {if((n/i)*i==n) {while((n/i)*i==n) n=n/i; u[j]=i;j++;}}
for(i=0;i<j;i++) Euler=(Euler/u[i])*(u[i]-1);
cin>>m;
p=m%Euler;q=m/Euler; i=0;j=1;
while((i<k)&&(j<=p)){
i++;
if(gcd(i,k)==1) j++;
}
cout<<(q*k+i);
return 0;
}