フェルマー数は正の整数で、整数xで2 2 x +1 として表現できます。
「Fermat-ness」と呼ばれる番号の属性を定義しましょう。
- 数のフェルマーネスは、基数から始まり、フェルマーネスを最大化するために2のべき乗が拡張された2のべき乗の長さよりも1つ小さくなります。
- フェルマー数ではない数のフェルマーネスはゼロです。
したがって、17(= 2 2 2 2 0 +1)にはフェルマーネス3があります。
チャレンジ
入力として正の非ゼロ整数を与え、数値のフェルマーネスを出力します。
ルール
- 入力を2進数、10進数、16進数、bignum、またはゴルフに最適な形式で入力できます。
- ソリューションは、使用する表現が64を超えるビット長の数値を処理できる必要があります。
- 非負の整数のべき乗のみ。
- もちろん、標準的な抜け穴は禁止されています。
- これはcode-golfなので、最短の回答が勝ちます。
テストケース
これらはフォーマットですinput->output
。入力はスペースを節約するために16進数です。
10000000000000000000000000000000000000000000000000000000000000001 -> 2
1000000000000BC00000000000000000000000000000000001000000000000001 ->0
1234567890ABCDEF -> 0
100000000000000000000000000000001 -> 1
5 -> 2
11 -> 3
10001 -> 4
101 -> 1
10進数で同じ:
115792089237316195423570985008687907853269984665640564039457584007913129639937 -> 2
115792089237316497527923305698859709742143344804209838213621568094470773145601 -> 0
1311768467294899695 -> 0
340282366920938463463374607431768211457 -> 1
5 ->2
17 -> 3
65537 -> 4
257 -> 1
サンドボックスへの貴重な入力をしてくれたgeokavelに感謝します。
1
1111を入力した場合、それが2進数、10進数、または16進数であることをどのように確認しますか?
—
J42161217
@Jenny_mathy回答者が入力の形式を決定することを意図していました。
—
HAEM
@ Mr.Xcoderサンドボックスでは、64ビット以下のフェルマー数が実際には多くないことがわかりました。私は質問が本質的にビッグナムに関するものであると主張しているので、ビッグナム処理を要求することができます。
—
HAEM
@HeikkiMäenpää覚えておいて、他の人が何を推薦しても、挑戦はあなたのものであり、あなたが望むものを作ることができます。
—
isaacg
あまりにも早く受け入れられると思います。通常、1〜2週間待ちます。決して受け入れないと言う人もいます!
—
-geokavel