Un numero Proth , che prende il nome da François Proth, è un numero che può essere espresso come
N = k * 2^n + 1
Dove k
è un numero intero dispari positivo ed n
è un numero intero positivo tale 2^n > k
. Facciamo un esempio più concreto. Take 3. 3 è un numero Proth perché può essere scritto come
(1 * 2^1) + 1
ed 2^1 > 1
è soddisfatto. 5 È anche un numero Proth perché può essere scritto come
(1 * 2^2) + 1
ed 2^2 > 1
è soddisfatto. Tuttavia, 7 non è un numero Proth perché l'unico modo per scriverlo nel modulo N = k * 2^n + 1
è
(3 * 2^1) + 1
e 2^1 > 3
non è soddisfatto.
La tua sfida è abbastanza semplice: devi scrivere un programma o una funzione che, dato un numero intero postivo, determina se si tratta di un numero Proth o meno. È possibile accettare input in qualsiasi formato ragionevole e generare un valore di verità se è un numero Proth e un valore di falsa se non lo è. Se la lingua ha qualche "Proth-numero rilevamento" funzioni, è possibile utilizzarli.
Test IO
Ecco i primi 46 numeri Proth fino a 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
Ogni altro input valido dovrebbe dare un valore falso.
Come al solito, si tratta di code-golf, quindi si applicano scappatoie standard e vince la risposta più breve in byte!
Nota a margine della teoria dei numeri:
Il più grande primo conosciuto che non è un Mersenne Prime è 19249 * 2^13018586 + 1
, che è anche un numero Proth!