問題
ましょう
n
自然数≥ 2
です。の最大の除数(それ自体n
とは異なる)をn
取得し、それからを引きn
ます。になるまで繰り返します1
。
質問
1
特定の数に達するのに何歩かかりますかn ≥ 2
。
詳細な例
させてください
n = 30
。
の最大の除数:
1. 30 is 15 --> 30 - 15 = 15
2. 15 is 5 --> 15 - 5 = 10
3. 10 is 5 --> 10 - 5 = 5
4. 5 is 1 --> 5 - 1 = 4
5. 4 is 2 --> 4 - 2 = 2
6. 2 is 1 --> 2 - 1 = 1
到達するのに6つのステップが必要1
です。
入力
- 入力は整数で
n
、ここn ≥ 2
。 - プログラムは、言語の最大整数値までの入力をサポートする必要があります。
出力
- のように、単にステップ数を出力します
6
。 - 先頭または末尾の空白または改行は問題ありません。
例
f(5) --> 3
f(30) --> 6
f(31) --> 7
f(32) --> 5
f(100) --> 8
f(200) --> 9
f(2016^155) --> 2015
必要条件
- 入力は
STDIN
、コマンドライン引数、関数パラメーターとして、または最も近い同等のものから取得できます。 - プログラムまたは関数を作成できます。無名関数の場合は、呼び出す方法の例を含めてください。
- これはコードゴルフなので、バイト単位の最短回答が勝ちです。
- 標準の抜け穴は許可されていません。
このシリーズは、OEISにもあります:A064097
誘導定義された準対数
a(1) = 0
とa(p) = 1 + a(p-1)
場合は、p
プライムとあるa(n*m) = a(n) + a(m)
場合m,n > 1
。
2^32 - 1
ます。残りはあなたとあなたのシステム次第です。希望、これがあなたの質問で意味したことです。