Pagini recente » Cod sursa (job #1190226) | Cod sursa (job #2976036) | Cod sursa (job #385355) | Cod sursa (job #2377504) | Cod sursa (job #2646599)
#include <iostream>
#include <stdio.h>
#define ll long long
using namespace std;
ll n,m,t,i,j,mid,p,nr,st,dr,k;
ll prim[1000];
void div(){
int d=1,p;
while(n>1){
d++;
p=0;
while(n%d==0)
n=n/d,p++;
if(p)
prim[++t]=d;
}
}
int main()
{
freopen("frac.in","r",stdin);
freopen("frac.out","w",stdout);
scanf("%lli%lli",&n,&m);
div();
st=1;dr=1LL<<61;
while(st<=dr){
mid=(st+dr)>>1;
nr=mid;
for(i=1;i<(1<<t);i++){
p=1;k=0;
for(j=0;j<t;j++)
if((1<<j) & i)
p=1LL*p*prim[j+1],k++;
if(k%2==1)
k=-1;
else
k=1;
nr=nr+1LL*k*mid/p;
}
if(nr<m)
st=mid+1;
else
dr=mid-1;
}
printf("%lli",st);
return 0;
}