费马数是可表示为2 2 x +1且带整数x的正整数。
现在让我们定义一个称为“ Fermat-ness”的数字的属性:
- 从基数开始,该数的费马性比二的幂的链的长度小一,其中二的幂被扩展以最大化费马性。
- 非费马数的数字的费马率为零。
因此,17(= 2 2 2 2 0 +1)具有费马能级3。
挑战
给定一个非零正整数作为输入,输出数字的费马性。
规则
- 您可以采用二进制,十进制,十六进制,大数字等输入形式,也可以采用让您最满意的格式
- 您的解决方案必须能够处理长度超过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
感谢geokavel在沙盒中的宝贵投入。
1
如果我输入1111,您怎么知道它是二进制,十进制还是十六进制???
—
J42161217
@Jenny_mathy我的意思是让回答者决定他们想要哪种输入格式。
—
HAEM
@ Mr.Xcoder出现在沙箱中的是,实际上并没有很多64位或更少的Fermat数字。我声称问题本质上是关于bignum的,所以我可以要求bignum处理。
—
HAEM
@HeikkiMäenpää请记住,无论别人提出什么建议,挑战都是您的挑战,您可以做到自己想要的。
—
isaacg
我认为为时过早,也不能接受。通常等待1或2周。有人说永不接受!
—
geokavel