Pagini recente » Cod sursa (job #2160571) | Cod sursa (job #2559517) | Cod sursa (job #1019129) | Cod sursa (job #1112216) | Cod sursa (job #548596)
Cod sursa(job #548596)
#include<stdio.h>
#include<math.h>
#define Nmax 1000000
long long nr,p,a[Nmax],k,i,j,n,q,st=0,dr=(long long)1<<61,m;
long long pinex(long long q)
{
long long s=0;
for (int i=1;i<=(1<<nr)-1;i++)
{
p=-1;
for (int j=0;j<=nr-1;j++)
if (i&(1<<j))
p=p*a[j+1]*(-1);
s+=(q/p);
}
return q-s;
}
void factori(int n)
{
for (i=2;i<=sqrt(n);i++)
if (n%i==0)
{
a[++nr]=i;
while (n%i==0) n/=i;
}
if (n!=0) a[++nr]=i;
}
int main()
{
freopen("frac.in","r",stdin);
freopen("frac.out","w",stdout);
scanf("%lld%lld",&n,&k);
factori(n);
while (st<dr)
{
m=(st+dr)/2;
if (pinex(m)>=k)
{
q=m;
dr=m-1;
}
else st=m+1;
}
printf("%lld\n",q);
return 0;
}