Pagini recente » Cod sursa (job #1156875) | Cod sursa (job #1521936) | Cod sursa (job #1994952) | Cod sursa (job #1773343) | Cod sursa (job #2646592)
#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("%d%d",&n,&m);
div();
st=1;dr=1LL*1<<61;
while(st<=dr){
mid=(st+dr)/2;
nr=mid;
for(i=1;i<(1<<t);i++){
p=1;k=0;
for(j=0;j<t;j++)
if((1<<j) & i)
p=p*prim[j+1],k++;
if(k%2==1)
k=-1;
else
k=1;
nr=nr+k*mid/p;
}
if(nr<m)
st=mid+1;
else
dr=mid-1;
}
printf("%lli",st);
return 0;
}