Pagini recente » Cod sursa (job #2559377) | Cod sursa (job #2558365) | Cod sursa (job #440550) | Cod sursa (job #927374) | Cod sursa (job #2166371)
# include <fstream>
# define DIM 320000
using namespace std;
ifstream fin("frac.in");
ofstream fout("frac.out");
long long f[DIM],d[DIM/10],val[(1<<16)],v[16],b[16],n,m,k,nr,i,j,step,cnt,x,q,Nr,p,r,NR;
long long numar(long long m){
long long nr=0;
for(int i=1;i<=Nr;i++)
nr+=m/val[i];
return nr;
}
int main () {
fin>>n>>NR;
for(i=2;i*i<=DIM-5;i++)
if(f[i]==0){
d[++k]=i;
for(j=2*i;j<=DIM-5;j+=i)
f[j]=1;
}
for(;i<=DIM-5;i++)
if(f[i]==0)
d[++k]=i;
x=n;
for(i=1;i<=k&&d[i]*d[i]<=n&&x!=1;i++){
cnt=0;
while(x%d[i]==0){
x/=d[i];
cnt++;
}
if(cnt)
v[++q]=d[i];
}
if(x!=1)
d[++q]=x;
while(b[0]==0){
j=q;
while(b[j]){
b[j]=0;
j--;
}
nr=0;
p=1;
b[j]=1;
for(i=1;i<=q;i++)
if(b[i]){
p*=v[i];
nr++;
}
if(nr%2==0)
val[++Nr]=p;
else
val[++Nr]=-p;
}
for(j=0,step=(1LL<<61);step;step/=2)
if(numar(j+step)<NR)
j+=step;
fout<<j+1<<"\n";
return 0;
}