Números Primos de nuevo
Submit solution
Points:
100 (partial)
Time limit:
3.0s
Java 8
6.0s
Python
6.0s
Memory limit:
64M
Author:
Problem type
Allowed languages
Ada, Assembly, Awk, BrainF***, C, C#, C++, Dart, Go, Java, JS, Kotlin, Lua, Pascal, Perl, Prolog, Python, Scala, Swift, VB
Los competidores están exahustos de problemas sobre números primos. Pero ellos realmente saben que los entrenadores son malvados y que van a querer incluir otro problema de esta área. Dado un número entero , los participantes deben encontrar el intervalo más corto que contiene a . ¡Esperen un segundo! ¿Qué hacen? Este no es un problema de números primos, de hecho este es más simple que . Claro que y deben ser... usted sabe.
Entrada
La primera línea de entrada contiene un entero . Continuan líneas, cada una con un número
Salida
líneas conteniendo y , .
Ejemplo de entrada
2
2
4
Ejemplo de salida
2 2
3 5
Comments
Me da RTE segmentation fault el ultimo caso ._.
LO hice con fuerza bruta
me da rte
En efecto, estás accediendo a la posición 100000 de un arreglo de tamaño 100000. Aumenta en 1 el tamaño del arreglo.
Chequea que no estés accediendo a un índice fuera de rango en un arreglo
Alguien me puede ayudar aquí
Otra idea puede ser precalcular A y B. O sea: si es el mayor primo menor o igual que y es el menor primo mayor o igual que , entonces si es primo, y si no, . Entonces cada pregunta la puedes responder en tiempo constante.
Este problema se puede hacer con Fuerza bruta porque son pocas preguntas, si fueran preguntas: Mira, tienes que buscar para cada que te preguntan, el mayor número primo menor o igual que y el menor número primo mayor o igual que . Primero con la criba de Erathostenes sacas todos los primos y los guardas ordenados en un arreglo. Ahora cada vez que pregunten por un , con búsqueda binaria puedes encontrar los dos valores q necesitas. Puedes hacer la búsqueda binaria con la STL, B es el lower_bound, y A es la posición anterior al upper_bound.