Cod sursa(job #501182)

Utilizator bogdanvilceleanuBogdan Vilceleanu bogdanvilceleanu Data 14 noiembrie 2010 14:57:21
Problema Frac Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#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;
}