Pagini recente » Cod sursa (job #2629436) | Cod sursa (job #2064139) | Cod sursa (job #2681265) | Cod sursa (job #1464788) | Cod sursa (job #430747)
Cod sursa(job #430747)
#include<stdio.h>
long long n,p,nrp,pr[1<<10],prod[1<<10];
void rez()
{
long long i,j,q,p;
for(i=0;i<(1<<nrp);++i)
{
p=1;
q=i;
for(j=0;q;++j,q>>=1)
if(q%2==1)
p*=-pr[j];
prod[i]=p;
}
}
long long calc(long long x)
{
int i;
long long s=0;
for(i=0;i<(1<<nrp);++i)
s+=x/prod[i];
return s;
}
void cautb()
{
long long i,pas;
pas=(long long)1<<61;
for(i=0;pas;pas>>=1)
if(calc(i+pas)<p)
i+=pas;
printf("%lld\n",++i);
}
void desc()
{
long long i;
for(i=2;i*i<=n;i++)
if(n%i==0)
{
while(n%i==0)
n/=i;
pr[nrp++]=i;
}
if(n!=1)
pr[nrp++]=n;
}
int main()
{
freopen("frac.in","r",stdin);
freopen("frac.out","w",stdout);
scanf("%lld%lld",&n,&p);
desc();
rez();
cautb();
return 0;
}