Pagini recente » Cod sursa (job #2064379) | Cod sursa (job #1597268) | Cod sursa (job #2150288) | Cod sursa (job #3283549) | Cod sursa (job #2402472)
#include <bits/stdc++.h>
const int MV = 100005 ;
FILE *in = fopen("divprim.in", "r"), *out = fopen("divprim.out", "w") ;
std::vector<int> prime[8] ;
int sieve[MV] ;
void ciur() {
int i, j ;
for (i = 4 ; i <= MV ; i += 2) {
sieve[i] = 1 ;
}
for (i = 3 ; i <= MV ; i += 2) {
if (!sieve[i]) {
for (j = i ; j <= MV ; j += i) {
sieve[j] ++ ;
}
}
}
}
void comp() {
int i ;
for (i = 1 ; i <= MV ; ++ i) {
prime[sieve[i]].push_back(i) ;
}
}
int caut_bin(int limit, int nrdiv) {
int pas, pos(0) ;
for (pas = 1 << 14 ; pas ; pas >>= 1) {
if (pas + pos < prime[nrdiv].size() && prime[nrdiv][pas + pos] <= limit)
pos |= pas ;
}
return prime[nrdiv][pos] ;
}
int solve() {
int n, k ;
fscanf(in, "%d %d", &n, &k) ;
int ans = caut_bin(n, k) ;
return ans * (ans <= n) ;
}
int main() {
ciur() ;
comp() ;
int querrys ;
fscanf(in, "%d", &querrys) ;
while (querrys --) {
fprintf(out, "%d\n" ,solve()) ;
}
}