void primos(long p[], long t) {
long n = 3, d; /* natural, divisor */
double r; /* raiz de n */
long efp[10] = {2,3,5,7,11,13,17,19,23,29}; // primos
unsigned long np = 10, pp; /* # actual de primos, posicion primo */
int s; /* si primo (1 = si, 0 = no) */
for (pp = 0; pp < np; pp++) p[pp] = efp[pp];
do {
s = 1;
pp = 0;
r = sqrt(n);
do {
d = p[pp++];
if (!(n%d)) s = 0;
} while (s && d < r);
if (s && n > 30) p[np++] = n;
n += 1;
} while (np < t);
}
int primo(long p[], long t, long n) {
/* determina si n es primo */
int s = 1, i = 0; /* si primo */
double r; // raiz de n
long pp = 0, d; /* posicion en p[] */
r = sqrt(n);
do {
d = p[pp++];
if (!(n%d)) s = 0;
} while (s && d < r);
if (n == 1) s = 0;
if (n == 2) s = 1;
return s;
}
int main() {
long lim = 100000, pri[lim], a, b;
int n, k;
primos(pri, lim);
scanf(“%d”, &n);
for (k = 0; k < n; k++) {
scanf(“%ld %ld”, &a, &b);
for ( ; a <= b; a++) if (primo(pri, lim, a)) printf(“%ld\n”, a);
printf(“\n”);
}
printf(“\n\n”);
/* system(“pause”); */
return 0;
}