# El significado de los problemas
Dados dos números enteros l, r, encontrar el [l, r] el par más cercano de número primo adyacente, y el número de más alejado masa adyacente de un par de intervalo
l, r ∈ [1, 2 31 -1]
Donde rl <= 1E6
# Explicaciones
L, una amplia gama de r, sobre 2E9 lineal algoritmo no puede determinarse [. 1, r] en todos los números primos, pero una pequeña gama de rl,
Cualquier compromiso debe contener un número de no más de √n factores primos, se determina que todos los números primos 2 ~ √r,
Por cada número primo, y [l, r] en la parte alícuota de esta marca figura, el resto es número primo dentro de la gama.
Para la comparación por pares primer máximo valor a
La complejidad de O (√r * log (log r))
1 #include <. Bits / STDC ++ h> 2 #define ll largo largo 3 usando espacio de nombres std; 4 const int N = 1E6; 5 primos ll [N], cnt; 6 bool st [N]; 7 bool rec [N]; 8 ll pri [N], num; // 位于l ~ r之间的质数 9 void get_primes ( int n) { 10 memset (st, falso , sizeof st); 11 para ( int i = 2 ; i <= n; i ++ ) { 12 si (! st [i]) números primos [cnt ++] = i; 13 para ( int j = 0 ; primos [j] <= n / i; j ++ ) { 14 st [primos [j] * i] = verdadero ; 15 Si (% primos i [j] == 0 ) descanso ; 16 } 17 } 18 } 19 int main () { 20 ll l, r; 21 , mientras que (cin >> l >> r) { 22 get_primes (sqrt (r)); 23 memset (rec, falso , sizeofREC); 24 para (LL I = 0 ; I <CNT; I ++ ) { 25 LL P = números primos [I]; 26 es para (LL J = max ( 2 * P, (L + p- 1. ) / P * P ); J <= R & lt; J + = p) { // múltiple es mayor que la primera p-l, los dos casos,% p = 0 y p = 0%! 27 REC [JL] = true ; 28 } 29 } 30 NUM = 0 ; 31 es para ( int I = 0 ; I <= RL es una; I ++ ) { 32 IF (! REC [I] && I + L> . 1 ) //1不是质数特判 33 pri [num ++] = i + l; 34 } 35 36 si (<num 2 ) puts ( " No hay números primos adyacentes. " ); 37 otra cosa { 38 int mx = 0 , Mn = 0 ; 39 para ( int i = 0 ; i <nú- 1 ; i ++ ) { 40 int d = pri [i + 1 ] - pri [i]; 41 si (d> pri [mx + 1 ] - pri [mx]) mx = i; 42 si (d <pri [mn + 1 ] - pri [Mn]) mn = i; 43 } 44 printf ( " % d,% d son los más cercanos,% d,% d son más distante \ n. " , Pri [Mn], pri [mn + 1 ], pri [mx], pri [mx + 1 ]); 45 } 46 } 47 }