Cod sursa(job #470790)

Utilizator matei_cChristescu Matei matei_c Data 15 iulie 2010 16:01:08
Problema Divizori Primi Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
const int N=1000000+1;
int nrdivprimi[N];
int a[8][N];//a[i][j]=cel mai mare numar mai mic decat j care are i divizori primi
int n,k,t;

int main()
{
	int i,j;
	freopen("divprim.in","r",stdin);
	freopen("divprim.out","w",stdout);
	nrdivprimi[1]=0;
	for(i=2;i*i<=N;i++)
	{
		if(nrdivprimi[i]==0)
		{
			nrdivprimi[i]++;
			for(j=2*i;j<=N;j+=i)
				nrdivprimi[j]++;
		}
	}
	for(j=1;j<=N;j++)
		a[0][j]=1;
	for(i=1;i<=7;i++)
	{
		for(j=1;j<N;j++)
		{
			if(nrdivprimi[j]==i)
				a[i][j]=j;
			else
				a[i][j]=a[i][j-1];
		}
	}
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%d",&n,&k);
		printf("%d\n",a[k][n]);
	}
	return 0;
}