Eu acho que é mais fácil explicar esse desafio de maneira seqüencial. Comece com um número de entrada N e:
- Encontre seu maior fator primo
- Verificar números acima e abaixo N e ver se o máximo factor principal é maior (ou seja, o maior factor primo de N-1 e / ou N + 1 é maior do que o factor de N .
- Continue verificando números mais altos e / ou mais baixos vizinhos de N nas direções em que os fatores mais altos estão aumentando ( (N-2, N-3 ...) e / ou (N + 2, N + 3 ...) e assim em)
- Uma vez que não existem fatores primos em qualquer direção que sejam mais altos do que os que já encontramos, paramos e produzimos o fator primo mais alto que encontramos.
Vejamos um exemplo:
245
tem os principais fatores 5, 7, 7
. Seus vizinhos são:
244 -> 2, 2, 61
245 -> 5, 7, 7
246 -> 2, 3, 41
O fator primordial mais alto está aumentando em ambas as direções, portanto, devemos olhar para o próximo vizinho:
243 -> 3, 3, 3, 3, 3
244 -> 2, 2, 2, 61
245 -> 5, 7, 7
246 -> 2, 3, 41
247 -> 13, 19
Os fatores primos mais altos agora estão diminuindo em ambas as direções; portanto, o fator primo mais alto que encontramos é 61
e deve, portanto, ser retornado.
Outro exemplo:
Vamos olhar 1024
. Seus principais fatores são 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
. Os principais fatores de seus vizinhos mais próximos são:
1023 -> 3, 11, 31
1024 -> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
1025 -> 5, 5, 41
O fator primordial mais alto está aumentando em ambas as direções, de 2
para 31
ou 41
. Vamos olhar para os vizinhos:
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
O maior fator primo para 1022
é 73
e o maior fator primo para 1026
é 19
. Uma vez que 19
é mais baixo do 41
que não estamos interessados. Ainda está aumentando para números menores que N, portanto, verificaremos o próximo nessa direção :
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
é o prime e o prime mais alto que encontramos, portanto, ele deve ser retornado.
Regras:
- Você só será positivo
N
maior que1
e menor que2^31-2
. - Os formatos de entrada e saída são opcionais, mas os números devem estar na base 10.
- Você deve continuar procurando números primos mais altos, desde que o valor mais alto esteja aumentando nessa direção. As direções são independentes uma da outra.
Casos de teste:
Formato: N, highest_factor
2, 3
3, 3
6, 7
8, 11
24, 23
1000, 997
736709, 5417
8469038, 9431
N=2
na verdade, parece ser um caso extremo, uma vez 1
que não possui fatores primos, portanto, nenhum fator primordial máximo com o qual possamos comparar para decidir se devemos continuar.
2
para N. Em seguida, obtemos5
N-1 e61
N + 1. Então chegamos19
ao N-2 e67
ao N + 2. Devemos continuar tentando números mais baixos, desde19>5
ou parar, desde5<61
? Ou seja, os máximos são mantidos de lado? (Não tenho certeza se o exemplo é matematicamente possível).