Pagini recente » Cod sursa (job #130312) | Cod sursa (job #1877173) | Cod sursa (job #1005009) | Cod sursa (job #891951) | Cod sursa (job #2535203)
#include <fstream>
using namespace std;
ifstream cin ("divprim.in");
ofstream cout ("divprim.out");
char ciur[1000050];
int a[10][400010];
void ciuruire()
{
int i,j;
ciur[0]=ciur[1]=0;
for (i=2; i*i<=1000000; i++)
if (ciur[i]==0)
for (j=i; j<=1000000; j=j+i)
ciur[j]++;
}
int cautare_binara(int n,int k)
{
int st,dr,poz,mijl;
st=1;
dr=a[k][0];
poz=0;
while (st<=dr)
{
mijl=(st+dr)/2;
if (a[k][mijl]>n)
dr=mijl-1;
else
{
st=mijl+1;
poz=mijl;
}
}
if (poz!=0)
return a[k][poz];
else
return 0;
}
int main()
{
int i,t,n,k;
ciuruire();
a[0][0]=1;
a[0][1]=1;
for (i=2; i<=1000000; i++)
{
if (ciur[i]==0)
ciur[i]=1;
a[ciur[i]][0]++;
a[ciur[i]][a[ciur[i]][0]]=i;
}
cin>>t;
for (i=1; i<=t; i++)
{
cin>>n>>k;
cout<<cautare_binara(n,k)<<"\n";
}
return 0;
}