Pagini recente » Cod sursa (job #2586923) | Cod sursa (job #170236) | Cod sursa (job #178523) | Cod sursa (job #2594306) | Cod sursa (job #2701242)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("frac.in");
ofstream fout("frac.out");
long long p,n,v[1000001],k,i;
long long pinex(long long a)
{
long long rez=a,p,nrc,i,j;
for(i=1; i<(1LL<<k); i++)
{
nrc=0;
p=1;
for(j=0; j<k; j++)
if(i&(1LL<<j))
{
nrc++;
p=p*v[j+1];
}
if(nrc%2==1) rez=rez-a/p;
else rez=rez+a/p;
}
return rez;
}
long long caut_bin(long long p)
{
long long st,dr,mid;
st=1;
dr=1000000000000000000000;
while(st<=dr)
{
mid=(st+dr)/2;
if (pinex(mid)<p)st=mid+1;
else dr=mid-1;
}
return st;
}
int main()
{
fin>>n>>p;
i=2;
while(n>1&&i<=sqrt(n))
{
if(n%i==0)v[++k]=i;
while(n%i==0)n=n/i;
i++;
}
if(n>1)v[++k]=n;
fout<<caut_bin(p);
return 0;
}