Intro
Invertire e aggiungere è semplice come sembra, prendere n
e aggiungerlo alle sue cifre in ordine inverso. (es. 234 + 432 = 666).
Se si applica questo processo ripetutamente, alcuni numeri colpiranno un numero primo e alcuni non raggiungeranno mai un numero primo.
Esempio
Ho attualmente
11431 rep.
11431 is not prime
11431 + 13411 = 24842 which is not prime
24842 + 24842 = 49684 which is not prime
49684 + 48694 = 98378 which is not prime
98378 + 87389 = 185767 which is prime!
Questo numero raggiunge un numero primo
Al contrario, qualsiasi multiplo di 3 non raggiungerà mai un numero primo, questo perché tutti i multipli di 3 hanno una somma di cifre che è un multiplo di 3 e viceversa. Pertanto, invertire e aggiungere un multiplo di 3 si tradurrà sempre in un nuovo multiplo di 3 e quindi mai un numero primo.
Compito
Prendi un numero intero positivo n
e determina se invertire e aggiungere ripetutamente comporterà mai un numero primo. Emette un valore di verità o falsa. O verità per raggiungere un valore primo e falsa per non o viceversa entrambi sono accettabili.
Si considererà che i numeri primi raggiungano un numero primo in zero iterazioni.
Questo è code-golf quindi cerca di rendere il tuo codice il più breve possibile.
Casi test
Vero per raggiunge un primo falso per non raggiunge mai un primo
11 -> True
11431 -> True
13201 -> True
13360 -> True
13450 -> True
1019410 -> True
1019510 -> True
22 -> False
1431 -> False
15621 -> False
14641 -> False
Suggerimento
Mentre stavo scrivendo questa sfida, ho scoperto un bel trucco che rende questo problema molto più semplice. Non è impossibile senza questo trucco e non è nemmeno banale, ma aiuta. Mi sono divertito molto a scoprirlo, quindi lo lascerò in uno spoiler qui sotto.
La ripetizione inversa e l'aggiunta colpiranno sempre un multiplo di 11 in 6 iterazioni o meno. Se non raggiunge un numero primo prima di un multiplo di 11, non colpirà mai un numero primo.