Числа Ферма являются положительными целыми числами, которые могут быть выражены как 2 2 x +1 с целым числом x.
Давайте теперь определим атрибут числа, называемого «Fermat-ness»:
- Ферматность числа на единицу меньше, чем длина цепочки степеней двух, начиная с основания, с степенями двух, развернутыми таким образом, чтобы максимизировать фермацию.
- Число, не являющееся числом Ферма, имеет нулевое значение Ферма.
Итак, 17 (= 2 2 2 2 0 +1) имеет Ферматнесс три.
Вызов
Если в качестве входных данных положительное ненулевое целое число, выведите Fermatness числа.
правила
- Вы можете использовать входные данные в двоичном, десятичном, шестнадцатеричном виде, в виде bignum или любого другого формата, который позволит вам играть в гольф наилучшим образом.
- Ваше решение должно быть в состоянии обрабатывать числа с длинами битов более 64 независимо от того, какое представление вы используете.
- Только неотрицательные целые числа.
- Стандартные лазейки , конечно, запрещены.
- Это код-гольф , поэтому выигрывает самый короткий ответ.
Контрольные примеры
Это в формате input->output
. Ввод в шестнадцатеричном формате для экономии места.
10000000000000000000000000000000000000000000000000000000000000001 -> 2
1000000000000BC00000000000000000000000000000000001000000000000001 ->0
1234567890ABCDEF -> 0
100000000000000000000000000000001 -> 1
5 -> 2
11 -> 3
10001 -> 4
101 -> 1
То же в десятичном виде:
115792089237316195423570985008687907853269984665640564039457584007913129639937 -> 2
115792089237316497527923305698859709742143344804209838213621568094470773145601 -> 0
1311768467294899695 -> 0
340282366920938463463374607431768211457 -> 1
5 ->2
17 -> 3
65537 -> 4
257 -> 1
Спасибо геокавелю за неоценимый вклад в песочницу.