O fundo
O pessoal estava falando sobre fatoração privilegiada no bate - papo e nos encontramos falando sobre repunits. Repunits são um subconjunto dos números conhecidos como repdigits, que são números que consistem apenas em dígitos repetidos, como 222
ou 4444444444444444
, mas as repunits consistem apenas em 1
.
Os primeiros repunits par são, portanto 1
, 11
, 111
, etc. Estes são referidos por R n , então R 1 = 1
, R 2 = 11
, etc, e são geradas pela fórmula R(n) = (10^n - 1)/9
, com n > 0
.
A fatoração primária desses números de repunit segue a sequência A102380 no OEIS. Por exemplo:
R 1 = 1
R 2 = 11
R 3 = 111 = 3 * 37
R 4 = 1111 = 11 * 101
R 5 = 11111 = 41 * 271
R 6 = 111111 = 3 * 7 * 11 * 13 * 37
R 7 = 1111111 = 239 * 4649
...
O desafio
Escreva um programa ou função que, quando recebe um número inteiro de entrada n com n >= 2
via STDIN ou equivalente , gera ou retorna os novos fatores primos para R n , em qualquer formato conveniente. "Novos fatores primos" aqui significa tudo x
onde x
é um fator primo de R n , mas x
não é um fator primo para qualquer R k anterior , com 1 <= k < n
(ou seja, se escrevermos os fatores primos para todo R em sequência, não vimos x
antes).
Os exemplos
Input: 6
Output: 7, 13
(because 3, 11, and 37 are factors of a smaller R_k)
Input: 19
Output: 1111111111111111111
(because R_19 is prime, so no other factors)
Input: 24
Output: 99990001
(because 3, 7, 11, 13, 37, 73, 101, 137, 9901 are factors of a smaller R_k)
Input: 29
Output: 3191, 16763, 43037, 62003, 77843839397
(because no factors of R_29 are also factors of a smaller R_k)
Os extras:
- Seu código pode fazer qualquer coisa ou nada se
n < 2
. - Você pode assumir um limite superior "razoável" para
n
fins de teste e execução - não se espera que seu código seja geradon = 10000000
, por exemplo, mas seu algoritmo deve funcionar nesse caso se houver tempo e capacidade computacionais ilimitados. - Aqui está um site dedicado às fatorações de repunits para referência.
- Eu não tenho ido através da matemática, mas eu propor uma hipótese que cada n tem um resultado distinto para este algoritmo - isto é, sem n existe tal que R n não tem fatores novos.
Oferecerei uma recompensa de 250 pontos se alguém provar ou refutar isso em sua resposta.Thomas Kwa propôs uma prova elegante e eu concedi a recompensa.