Pagini recente » Rating Andrei Margeanu (AndreiM1998) | Cod sursa (job #296422) | Cod sursa (job #1656123) | Cod sursa (job #782121) | Cod sursa (job #2532846)
#include <fstream>
#include <string.h>
using namespace std;
ifstream f ("divprim.in");
ofstream g ("divprim.out");
int t, n, k, i, v[1000002], best[1000002];
void generare ()
{
int i, j;
v[1] = 0;
for (i=2; i<=1000000; i++)
{
if (v[i] == 0)
{
for (j=2*i; j<=1000000; j=j+i)
{
v[j] ++;
}
}
}
for (i=1; i<=1000000; i++)
best[i] = max(best[i-1], v[i]);
}
int getnumar (int nr, int div)
{
if (nr == 1)
return 0;
if (best[nr] < div)
return 0;
if (div == 0)
return 1;
int i;
for (i=nr; i>=1; i--)
{
if (v[i] == div)
return i;
}
return 0;
}
int main()
{
generare();
f >> t;
for (i=1; i<=t; i++)
{
f >> n >> k;
g << getnumar(n, k) << '\n';
}
return 0;
}