Pagini recente » Cod sursa (job #1889901) | Cod sursa (job #297881) | Cod sursa (job #1354202) | Cod sursa (job #1344788) | Cod sursa (job #1803647)
#include <cstdio>
using namespace std;
const int NMAX=3000;
bool ciur[NMAX];
void ciurul()
{
int I, J;
for(I=2; I<=NMAX; I++)
ciur[I] =1;
for (I=2; I<=NMAX; I++)
if(ciur[I] == 1)
for(J=2; J*I <= NMAX; J ++)
ciur[I*J] = 0;
}
int nrdivprim(int n,int k)
{
ciurul();
int d,nr=0;
for(d=2; d<=n; d++)
if(ciur[d]==1&&n%d==0)
nr++;
if(nr==k)
return 1;
return 0;
}
int numbers[NMAX][7];
void completare()
{
int i,j,k;
for(i=2; i<=NMAX; i++)
for(j=0; j<=7; j++)
{
for(k=i; k>=2; k--)
if(nrdivprim(k,j))
{
numbers[i][j]=k;
break;
}
}
}
int main()
{
freopen("divprim.in","r",stdin);
freopen("divprim.out","w",stdout);
int t,n,k,i,j,ok;
scanf("%d",&t);
completare();
for(i=1; i<=t; i++)
{
ok=0;
scanf("%d%d",&n,&k);
/*for(j=n; j>=1; j--)
if(nrdivprim(j,k))
{
ok=1;
printf("%d\n",j);
break;
}
if(ok==0)
printf("0\n");*/
printf("%d",numbers[n][k]);
}
/*for(i=1;i<=1000000;i++)
for(j=1;j<=7;j++)
printf("%d",numbers[i][j]);
int i,j,k;
for(i=1; i<=1000000; i++)
for(j=1; j<=7; j++)
{
for(k=i; k>=1; k--)
if(nrdivprim(k,j))
{
numbers[i][j]=k;
break;
}
}
for(i=1;i<=100;i++)
for(j=1;j<=7;j++)
printf("%d",numbers[i][j]);*/
return 0;
}