Pagini recente » Cod sursa (job #2102566) | Cod sursa (job #954112) | Cod sursa (job #2550178) | Cod sursa (job #2563651) | Cod sursa (job #1779872)
#include<fstream>
#include<bitset>
#define INF 2305843009213693952
using namespace std;
ifstream fin("frac.in");
ofstream fout("frac.out");
long long v[1000001],x[1000001], i,j,sol,nr,n,k,st,mid,a;
long long dr;
bitset<1000001> b;
long long cauta(long long a)
{
long long i,j,ok,r=0;
for(i=1;i<=a;i++)
{
ok=0;
for(j=1;j<=nr;j++)
if(i%x[j]==0)
{
ok=1;
break;
}
if(ok==0)
r++;
}
return r;
}
int main()
{
for(i=2;i<=1000000;i++)
if(b[i]==0)
{
for(j=i+i;j<=1000000;j+=i)
b[j]=1;
v[++nr]=i;
}
fin>>n>>k;
nr=0;
a=n;
for(i=1;v[i]*v[i]<=a&&n!=1;i++)
{
if(n%v[i]==0)
{
x[++nr]=v[i];
while(n%v[i]==0)
n/=v[i];
}
}
if(n!=1)
x[++nr]=n;
st=1;
dr=INF;
while(st<=dr)
{
sol=0;
mid=(st+dr)/2;
sol=cauta(mid);
if(sol==k)
dr=mid-1;
else
if(sol>k)
dr=mid-1;
else
st=mid+1;
}
fout<<st;
fin.close();
fout.close();
return 0;
}