Pagini recente » Cod sursa (job #643781) | Cod sursa (job #194108)
Cod sursa(job #194108)
#include <stdio.h>
#define maxl 1000000
int i,j,k,n,t,gas,p,q,r;
int prim[maxl+10],prec[maxl+10];
int nr[80000];
int div[10][maxl],ind[10];
int main()
{
freopen("divprim.in","r",stdin);
freopen("divprim.out","w",stdout);
for (i=2; i<=maxl; i++)
if (prim[i]==0)
{
nr[++k]=i;
for (j=i; j<=maxl; j+=i)
prim[j]=1;
}
for (i=1; i<=k; i++)
for (j=nr[i]; j<=maxl; j+=nr[i])
prec[j]++;
for (i=0; i<=7; i++)
{
for (j=1; j<=maxl; j++)
if (prec[j]==i)
{
ind[i]++;
div[i][ind[i]]=j;
}
}
scanf("%d",&t);
while (t>0)
{
t--;gas=0;
scanf("%d %d",&n,&k);
p=0;q=ind[k]+1;
while (p+1<q)
{
r=(p+q)/2;
if (div[k][r]>n) q=r;
else if (div[k][r]<=n)
{
gas=div[k][r];
p=r;
}
}
printf("%d\n",gas);
}
return 0;
}