Creo que es más fácil explicar este desafío de manera secuencial. Comience con un número de entrada N y:
- Encuentra su factor primo más alto
- Verifique los números arriba y abajo de N y vea si el factor primo más alto es más alto (es decir, el factor primo más alto de N-1 y / o N + 1 es más alto que el factor de N) .
- Continúe verificando los números más altos o más bajos vecinos de N en las direcciones donde los factores más altos están aumentando ( (N-2, N-3 ...) y / o (N + 2, N + 3 ...) y así en)
- Una vez que no hay factores primos en ninguna dirección que sean más altos que los que ya hemos encontrado, nos detenemos y producimos el factor primo más alto que hemos encontrado.
Veamos un ejemplo:
245
tiene los factores primos 5, 7, 7
. Sus vecinos son:
244 -> 2, 2, 61
245 -> 5, 7, 7
246 -> 2, 3, 41
El factor primo más alto está aumentando en ambas direcciones, por lo que debemos mirar al próximo vecino:
243 -> 3, 3, 3, 3, 3
244 -> 2, 2, 2, 61
245 -> 5, 7, 7
246 -> 2, 3, 41
247 -> 13, 19
Los factores primos más altos ahora están disminuyendo en ambas direcciones, por lo que el factor primo más alto que hemos encontrado es 61
y, por lo tanto, debe devolverse.
Otro ejemplo:
Echemos un vistazo a 1024
. Sus factores primos son 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
. Los factores primos de sus vecinos más cercanos son:
1023 -> 3, 11, 31
1024 -> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
1025 -> 5, 5, 41
El factor primo más alto está aumentando en ambas direcciones, de 2
a 31
o 41
. Miremos a los vecinos:
1022 -> 2, 7, 73
1023 -> 3, 11, 31
1024 -> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
1025 -> 5, 5, 41
1026 -> 2, 3, 3, 19
El factor primo más alto para 1022
es 73
, y el factor primo más alto para 1026
es 19
. Como 19
es más bajo de 41
lo que no nos interesa. Sigue aumentando para números más pequeños que N, así que revisaremos el siguiente en esa dirección :
1021 -> 1021
1022 -> 2, 7, 73
1023 -> 3, 11, 31
1024 -> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
1025 -> 5, 5, 41
1026 -> 2, 3, 3, 19
1021
es un primo y el primo más alto que hemos encontrado, por lo que debe devolverse.
Reglas:
- Solo obtendrá positivo
N
mayor1
y menor que2^31-2
. - Los formatos de entrada y salida son opcionales, pero los números deben estar en la base 10.
- Debe continuar buscando primos más altos siempre que el valor más alto aumente en esa dirección. Las direcciones son independientes entre sí.
Casos de prueba:
Formato: N, highest_factor
2, 3
3, 3
6, 7
8, 11
24, 23
1000, 997
736709, 5417
8469038, 9431
N=2
en realidad parece ser un caso límite ya que 1
no tiene factores primos, por lo que no hay un factor primo máximo con el que podamos comparar para decidir si debemos continuar.
2
para N. Luego obtenemos5
para N-1 y61
para N + 1. Luego obtenemos19
N-2 y67
N + 2. ¿Deberíamos seguir intentando números más bajos, desde19>5
o parar, desde entonces5<61
? Es decir, ¿se mantienen los máximos por lado? (No estoy seguro si el ejemplo es matemáticamente posible).