Lo sfondo
La gente parlava di fattorizzazione in chat e ci siamo ritrovati a parlare di rimpatrio. I repunits sono un sottoinsieme dei numeri noti come repdigits, che sono numeri costituiti solo da cifre ripetute, come 222
o 4444444444444444
, ma le ricompense sono costituite solo da 1
.
I primi due sono quindi repunits 1
, 11
, 111
, ecc Questi sono indicati con R n , così R 1 = 1
, R 2 = 11
, ecc, e sono generati dalla formula R(n) = (10^n - 1)/9
, con n > 0
.
La scomposizione in fattori primi di questi numeri di repunit segue la sequenza A102380 nell'OEIS. Per esempio:
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
...
La sfida
Scrivere un programma o funzione che, quando somministrato un ingresso intero n con n >= 2
via STDIN o equivalente , uscite o ritorni i nuovi fattori principali per R n , in qualsiasi formato conveniente. "Nuovi fattori primi" qui significa tutto x
dove x
è un fattore primo di R n , ma x
non è un fattore primo per qualsiasi R k precedente , con 1 <= k < n
(cioè, se scriviamo i fattori primi per tutti R in sequenza, non abbiamo visto x
prima).
Gli esempi
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)
Gli extra:
- Il tuo codice può fare qualsiasi cosa o niente se
n < 2
. - Puoi assumere un limite superiore "ragionevole" per
n
scopi di test ed esecuzione - ad esempio, non ti aspettiamo che il tuo codice venga emesson = 10000000
, ma il tuo algoritmo dovrebbe funzionare in tal caso se ti danno potenza e tempo di calcolo illimitati. - Ecco un sito dedicato alle fattorizzazioni dei rimborsi per riferimento.
- Non ho analizzato la matematica, ma propongo un'ipotesi che ogni n abbia un risultato distinto per questo algoritmo - cioè, n non esiste in modo tale che R n non abbia nuovi fattori.
Offrirò una taglia di 250 punti se qualcuno lo dimostra o smentisce nella loro risposta.Thomas Kwa ha proposto una prova elegante e io ho assegnato la generosità.