Os números de Fermat são números inteiros positivos que podem ser expressos como 2 2 x +1 com um número inteiro x.
Vamos agora definir um atributo de um número chamado "Fermat-ness":
- A Fermatividade do número é um menor que o comprimento da cadeia de potências de dois, começando pela base, com potências de duas expandidas, a fim de maximizar a fermatividade.
- Um número que não é um número de Fermat tem a Fermat-ness de zero.
Portanto, 17 (= 2 2 2 2 0 +1) tem Fermat-ness três.
Desafio
Dado um número inteiro diferente de zero positivo como entrada, imprima a Fermat-ness do número.
Regras
- Você pode usar a entrada em binário, decimal, hexadecimal, como um bignum ou em qualquer formato que permita melhor
- Sua solução deve ser capaz de processar números com tamanhos de bits acima de 64, independentemente da representação que você usar.
- Somente potências inteiras não-negativas.
- É claro que as brechas padrão são proibidas.
- Isso é código-golfe , então a resposta mais curta vence.
Casos de teste
Estes estão em formato input->output
. A entrada está em hexadecimal para economizar espaço.
10000000000000000000000000000000000000000000000000000000000000001 -> 2
1000000000000BC00000000000000000000000000000000001000000000000001 ->0
1234567890ABCDEF -> 0
100000000000000000000000000000001 -> 1
5 -> 2
11 -> 3
10001 -> 4
101 -> 1
O mesmo em decimal:
115792089237316195423570985008687907853269984665640564039457584007913129639937 -> 2
115792089237316497527923305698859709742143344804209838213621568094470773145601 -> 0
1311768467294899695 -> 0
340282366920938463463374607431768211457 -> 1
5 ->2
17 -> 3
65537 -> 4
257 -> 1
Obrigado ao geokavel pela contribuição inestimável na caixa de areia.