Un numéro Proth , nommé d'après François Proth, est un numéro qui peut être exprimé par
N = k * 2^n + 1
Où k
est un entier positif impair et n
est un entier positif tel que 2^n > k
. Utilisons un exemple plus concret. Prenez 3. 3 est un numéro de Proth, car il peut être écrit comme
(1 * 2^1) + 1
et 2^1 > 1
est satisfait. 5 Est également un numéro de Proth, car il peut être écrit comme
(1 * 2^2) + 1
et 2^2 > 1
est satisfait. Cependant, 7 n’est pas un numéro Proth car le seul moyen de l’écrire sous la forme N = k * 2^n + 1
est
(3 * 2^1) + 1
et 2^1 > 3
n'est pas satisfait.
Votre défi est assez simple: vous devez écrire un programme ou une fonction qui, à partir d’un entier positif, détermine s’il s’agit d’un nombre Proth ou non. Vous pouvez prendre des entrées dans n’importe quel format raisonnable, et devez indiquer une valeur de vérité s’il s’agit d’un nombre de Proth et une valeur de faux si ce n’est pas le cas. Si votre langue possède des fonctions de "détection de numéro de proth", vous pouvez les utiliser.
Test IO
Voici les 46 premiers numéros de Proth allant jusqu'à 1000. ( A080075 )
3, 5, 9, 13, 17, 25, 33, 41, 49, 57, 65, 81, 97, 113, 129, 145, 161, 177, 193, 209, 225, 241, 257, 289, 321, 353, 385, 417, 449, 481, 513, 545, 577, 609, 641, 673, 705, 737, 769, 801, 833, 865, 897, 929, 961, 993
Toute autre entrée valide doit donner une valeur de fausseté.
Comme d'habitude, c'est du code-golf, donc les échappatoires standard s'appliquent, et la réponse la plus courte en octets gagne!
Note de la théorie des faits amusante:
Le plus grand nombre connu qui ne soit pas un prix Mersenne est 19249 * 2^13018586 + 1
ce qui se trouve être aussi un numéro Proth!