Um número de Proth , nomeado após François Proth, é um número que pode ser expresso como
N = k * 2^n + 1
Onde k
é um número inteiro positivo ímpar e n
é um número inteiro positivo tal que 2^n > k
. Vamos usar um exemplo mais concreto. A Tomada 3. 3 é um número de Proth porque pode ser escrito como
(1 * 2^1) + 1
e 2^1 > 1
está satisfeito. 5 Também é um número de Proth porque pode ser escrito como
(1 * 2^2) + 1
e 2^2 > 1
está satisfeito. No entanto, 7 não é um número de Proth porque a única maneira de escrevê-lo no formulário N = k * 2^n + 1
é
(3 * 2^1) + 1
e 2^1 > 3
não está satisfeito.
Seu desafio é bastante simples: você deve escrever um programa ou função que, dado um número inteiro positivo, determine se é ou não um número Proth. Você pode receber entradas em qualquer formato razoável e deve gerar um valor verdadeiro, se for um número Proth, e um valor falso, se não for. Se o seu idioma tiver funções de "detecção de número de próstata", você poderá usá-las.
Teste de E / S
Aqui estão os primeiros 46 números Proth de até 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
Qualquer outra entrada válida deve fornecer um valor falso.
Como de costume, isso é código-golfe, então as brechas padrão se aplicam e a resposta mais curta em bytes vence!
Teoria dos números - nota de lado divertida:
O maior primo conhecido que não é um primo de Mersenne é o 19249 * 2^13018586 + 1
que, por acaso, também é um número de Proth!