Intro
Inverser et ajouter est aussi simple que n
cela puisse paraître, prenez-le et ajoutez-le à ses chiffres dans l'ordre inverse. (par exemple 234 + 432 = 666).
Si vous appliquez ce processus à plusieurs reprises, certains nombres finiront par atteindre un nombre premier, et certains n'atteindront jamais un nombre premier.
Exemple
J'ai actuellement
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!
Ce nombre atteint son apogée
En revanche, tout multiple de 3 n'atteindra jamais un nombre premier, c'est parce que tous les multiples de 3 ont une somme de chiffres qui est un multiple de 3 et vice versa. Ainsi, inverser et ajouter un multiple de 3 donnera toujours un nouveau multiple de 3 et donc jamais un nombre premier.
Tâche
Prenez un entier positif n
et déterminez si une inversion et une addition répétées entraîneront un nombre premier. Sortez une valeur véridique ou fausse. Soit véridique pour atteint une valeur première et fausse pour non, soit l'inverse est acceptable.
Les nombres premiers seront considérés comme atteignant un nombre premier en zéro itération.
Il s'agit de code-golf , essayez donc de rendre votre code aussi court que possible.
Cas de test
Vrai pour atteint un premier faux pour n'atteint jamais un premier
11 -> True
11431 -> True
13201 -> True
13360 -> True
13450 -> True
1019410 -> True
1019510 -> True
22 -> False
1431 -> False
15621 -> False
14641 -> False
Allusion
Pendant que j'écrivais ce défi, j'ai découvert un truc sympa qui rend ce problème beaucoup plus facile. Ce n'est pas impossible sans cette astuce et ce n'est pas banal non plus mais ça aide. J'ai eu beaucoup de plaisir à découvrir cela, donc je vais le laisser dans un spoiler ci-dessous.
L'inverse et l'ajout répétés atteindront toujours un multiple de 11 en 6 itérations ou moins. S'il n'atteint pas d'amorce avant d'avoir atteint un multiple de 11, il n'atteindra jamais d'amorce.
la source
Réponses:
Rubis ,
84 79 7774 octetsEssayez-le en ligne!
la source
Haskell , 65 octets
f
prend unInteger
et retourne unBool
.True
signifie qu'il atteint un apogée.Essayez-le en ligne!
Malheureusement, le test premier court mais inefficace signifie que les
True
cas de test du PO autres que11
devenir trop gros pour finir. Mais par exemple 11432 est unTrue
cas qui se termine.Vous pouvez également essayer celui-ci de 3 octets de plus, pour lequel TIO peut terminer tous les
True
cas de test:Essayez-le en ligne!
Les tests principaux des deux versions se cassent sur 1, mais il se trouve qu'il arrive de toute façon à un premier (2).
Sinon, j'ai remarqué la même chose que GB dans le spoiler de la soumission Ruby:
la source
Python 2,
123110 octetsEnregistré 13 octets grâce à Ørjan Johansen et Wheat Wizard !
Renvoie 1 s'il atteint un nombre premier, 0 s'il ne le fait pas. Essayez-le en ligne!
la source
Python 2 ,
787069 octetsEssayez-le en ligne!
Explication
Ce programme repose sur le fait que
Ce programme est un lambda récursif avec des comparatifs logiques en circuit. Il vérifie d'abord si n est premier.
Si cela est vrai, nous revenons vrai.
S'il est faux, nous vérifions s'il s'agit d'un multiple de 11.
Si faux, nous retournons faux sinon nous renvoyons le résultat de
f
la prochaine itérationla source
Gelée , 11 octets
Essayez-le en ligne!
la source
S
pourrait êtreT
aussi.RD$+$
peut également être+RD$$
ouRD+<newline>Ç
(toutes les modifications triviales)S
parce qu'il a moins de chance de montrer quoi que ce soit> 1. Il n'y en a pasRD
, justeṚḌ
, et j'ai choisiṚḌ$+$
pour mieux l'organiser.S
; J'aurais dû choisir çaT
, mais c'est surtout pour l'intérêt de tout le monde.05AB1E ,
1413 octetsEDIT : enregistré un octet car l'entrée est réutilisée s'il n'y a pas assez d'éléments sur la pile
Essayez-le en ligne!
Utilise l'indice de la question
Comment ça marche
la source
MATLAB,
8881 octetsla source
JavaScript (ES6), 73 octets
Renvoie
0
outrue
.Commenté
Ceci est basé sur la formule de spoiler magique décrite par Wheat Wizard.
Cas de test
J'ai supprimé les deux entrées les plus importantes de l'extrait de code, car elles prennent quelques secondes. (Mais ils fonctionnent aussi.)
Afficher l'extrait de code
la source
Mathematica, 45 octets
la source
Serveur Microsoft SQL,
826786 * octets* Je me suis souvenu de la fonction IIF introduite dans Microsoft Sql Server 2012
Vérifiez-le en ligne
Le formatage plus soigné
la source
/*true*/
et/*false*/
?Gelée , 9 octets
Essayez-le en ligne!
Comment ça marche
la source
PHP 114 octets
Version plus lisible:
Essayez-le en ligne!
J'ai utilisé cette chose pour compter les octets.
la source