I numeri fermat sono numeri interi positivi che possono essere espressi come 2 2 x +1 con un numero intero x.
Definiamo ora un attributo di un numero chiamato "Fermat-ness":
- Il fermateness del numero è uno in meno della lunghezza della catena di poteri di due, a partire dalla base, con poteri di due espansi in modo da massimizzare il fermateness.
- Un numero che non è un numero Fermat ha Fermat-ness pari a zero.
Quindi, 17 (= 2 2 2 2 0 +1) ha Fermat-ness tre.
Sfida
Dato un intero diverso da zero positivo come input, emette la Fermat-ness del numero.
Regole
- Puoi prendere l'input in binario, decimale, esadecimale, come un bignum, o qualunque formato ti consenta di giocare a golf
- La soluzione deve essere in grado di elaborare numeri con lunghezze di bit superiori a 64, indipendentemente dalla rappresentazione utilizzata.
- Poteri interi non negativi.
- Le scappatoie standard sono ovviamente vietate.
- Questo è code-golf , quindi vince la risposta più breve.
Casi test
Questi sono in formato input->output
. L'input è in formato esadecimale per risparmiare spazio.
10000000000000000000000000000000000000000000000000000000000000001 -> 2
1000000000000BC00000000000000000000000000000000001000000000000001 ->0
1234567890ABCDEF -> 0
100000000000000000000000000000001 -> 1
5 -> 2
11 -> 3
10001 -> 4
101 -> 1
Lo stesso in decimale:
115792089237316195423570985008687907853269984665640564039457584007913129639937 -> 2
115792089237316497527923305698859709742143344804209838213621568094470773145601 -> 0
1311768467294899695 -> 0
340282366920938463463374607431768211457 -> 1
5 ->2
17 -> 3
65537 -> 4
257 -> 1
Grazie a geokavel per l'inestimabile input nella sandbox.