Pagini recente » Cod sursa (job #370803) | Cod sursa (job #3286371) | Cod sursa (job #1120615) | Cod sursa (job #1508867) | Cod sursa (job #1890444)
#include <cstdio>
#define maxN 1000000
#define maxK 7
using namespace std;
int sieve[maxN+10], dp[maxN+10][maxK+1];
void sieveOfEratosthenes(){
int i, j;
for (i=2; i<=maxN; i+=2)
sieve[i]=1;
for (i=3; i*i<=maxN; i+=2)
if (sieve[i]==0)
for (j=i; j<=maxN; j+=i)
sieve[j]++;
}
void precalculate(){
sieveOfEratosthenes();
int i, j;
for (i=1; i<=maxN; i++)
for (j=0; j<=maxK; j++)
if (sieve[i]==j)
dp[i][j]=i;
else dp[i][j]=dp[i-1][j];
}
int main(){
freopen("divprim.in", "r", stdin);
freopen("divprim.out", "w", stdout);
precalculate();
int T, N, K;
scanf("%d", &T);
while (T--){
scanf("%d%d", &N, &K);
printf("%d\n", dp[N][K]);
}
return 0;
}