Pagini recente » Cod sursa (job #1190998) | Cod sursa (job #973510) | Cod sursa (job #1395577) | Cod sursa (job #1367198) | Cod sursa (job #470796)
Cod sursa(job #470796)
#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<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;
}