Pagini recente » Cod sursa (job #2613964) | Cod sursa (job #1819779) | Cod sursa (job #1393379) | Cod sursa (job #2643399) | Cod sursa (job #2135972)
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("frac.in");
ofstream fout("frac.out");
ll p,n,k,d[11],i;
ll nr(ll x)
{ ll r=0;
for(ll prod,sgn,i=0;i<(1LL<<k);++i)
{ prod=sgn=1;
for(ll j=0;j<k;++j)
if((i&(1<<j)) != 0) prod*=d[j], sgn*=-1;
r+=sgn*x/prod;
}
return r;
}
ll caut()
{ ll i,pas=1LL<<60;
for(i=0;pas;pas>>=1)
if(nr(i+pas)<p) i+=pas;
return i+1;
}
int main()
{
fin>>n>>p;
for(i=2;i*i<=n;++i)
if (n%i==0)
{
d[k++]=i;
while(n%i==0)n/=i;
}
if(n>1)d[k++]=n;
fout<<caut()<<'\n';
return 0;
}