Pagini recente » Cod sursa (job #677361) | Borderou de evaluare (job #2561567) | Cod sursa (job #301304) | Cod sursa (job #1631361) | Cod sursa (job #501182)
Cod sursa(job #501182)
#include<cstdio>
#include<math.h>
using namespace std;
bool c[1200000000];
void ciur(long long n)
{
long long i,j,lim;
c[0]=1;
lim=(long long)sqrt(n);
for(i=4;i<=n;i=i+2)
c[i]=1;
for(i=3;i<=lim;i=i+2)
if(!c[i])
for(j=i*i;j<=n;j=j+2*i)
c[j]=1;
}
void desc(long long n)
{
long long d,lim,e;
d=2;
lim=sqrt(n)+1;
while(d<=lim && n>1)
{
e=0;
while(n%d==0)
{
++e;
n=n/d;
}
if(e)
c[d]=1;
d++;
for( ;c[d] && d<=lim;d++);
}//while
if(n>1)
c[n]=1;
}//functie
int main()
{
freopen("frac.in","r",stdin);
freopen("frac.out","w",stdout);
long long n,p,nr=0,i;
scanf("%lld",&n);
scanf("%lld",&p);
ciur(n*p);
desc(n);
for(i=1;;i++)
{
if(!c[i])
{
nr++;
if(nr==p)
{
printf("%lld\n",i);
return 0;
}
}
}
return 0;
}