Cod sursa(job #470988)

Utilizator popa.andreeaPopa Andreea Maria popa.andreea Data 16 iulie 2010 14:45:57
Problema Divizori Primi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
# include <stdio.h>
# define nmax 1000001
int c[nmax],a[8][nmax];
void ciur(long n)
{
	c[1]=0;
	c[0]=-1;
	long i,j;
	for (i=4; i<=n; i=i+2) c[i]=1;
	c[2]=1;
	for (i=3; i<=n; i=i+2)
		if (!c[i])
		{
			for (j=i+i; j<=n; j=j+i)
				c[j]++;
			c[i]=1;
		}
}
long n,m,t,k;
int main()
{
	freopen("divprim.in","r",stdin);
	freopen("divprim.out","w",stdout);
	scanf("%ld",&t);
	ciur(nmax);
	int i,j;
	a[1][0]=a[2][0]=a[3][0]=a[4][0]=a[5][0]=a[6][0]=a[7][0]=0;
	for (i=0;i<=7;i++)
		for (j=1;j<=nmax; j++)
			if (c[j]==i) a[i][j]=j;
				else a[i][j]=a[i][j-1];
	for (k=1;k<=t;k++)
	{
		scanf("%d%d",&n,&m);
		if (a[m][n]<=n) printf("%ld\n",a[m][n]);
			else printf("0\n");
	}
}