Pagini recente » Cod sursa (job #1545268) | Cod sursa (job #2978866) | Cod sursa (job #719959) | Cod sursa (job #1417881) | Cod sursa (job #1434929)
#include <iostream>
#include <stdio.h>
#include <algorithm>
#define MAX 1000001
FILE *f, *g;
using namespace std;
int d[MAX];
struct intrb
{
int lim, div, poz, rez;
};
intrb v[MAX];
int comp(intrb i, intrb j)
{
return i.div < j.div;
}
int comp2(intrb i, intrb j)
{
return i.poz < j.poz;
}
void nrdiv()
{
int i, j;
for(i = 2; i < MAX; i++)
if (d[i] == 0)
for(j = i; j < MAX; j += i)
d[j]++;
}
int main()
{ int n, aux, i;
f = fopen("divprim.in", "r");
fscanf(f, "%d", &n);
nrdiv();
g = fopen("divprim.out", "w");
for(i = 1; i <= n; i++)
{
fscanf(f, "%d%d", &v[i].lim, &v[i].div);
v[i].poz = i;
/*int j = 0;
aux = 0;
while(j <= x)
{
if(d[j] == y)
aux = j;
j++;
}
fprintf(g,"%d\n", aux);
*/
}
sort(v + 1, v + n + 1, comp);
i = 1;
int j = 0;
aux = v[i].div;
while(i <= n)
{
while(aux == v[i].div)
{
while(j <= v[i].lim)
{
if(d[j] == v[i].div)
v[i].rez = j;
j++;
}
i++;
}
aux = v[i].div;
j = 0;
}
sort(v + 1, v + n + 1, comp2);
for(i = 1; i <= n; i++)
{
fprintf(g, "%d\n", v[i].rez);
}
fclose(f);
fclose(g);
return 0;
}