今天,我们来看一个与Collatz函数f有关的序列a:
我们称形式为z,f(z),f(f(z)),...的序列为Collatz序列。
我们序列中的第一个数字a(1)是0。在反复施加f的情况下,它落入一个循环0→0→…
我们尚未看到的最小数字是1,使a(2)= 1。在重复使用f的情况下,它会进入一个循环1→4→2→1→…
现在我们已经在上面的循环中看到了数字2,所以下一个最小的数字是a(3)= 3,属于循环3→10→5→16→8→4→2→1→4→2→1 →…
在以上所有循环中,我们已经看到了4和5,因此下一个数字是a(4)= 6。
现在,您应该明白了。一(N)是不是为所有任何在Collatz序列的一部分的最小数目一(1),...,A(N - 1) 。
编写一个给定正整数n返回a(n)的程序或函数。以字节为单位的最短代码获胜。
测试用例:
1 -> 0
2 -> 1
3 -> 3
4 -> 6
5 -> 7
6 -> 9
7 -> 12
8 -> 15
9 -> 18
10 -> 19
50 -> 114
(这是OEIS序列A061641。)
n
可以从0开始吗?
a(n+1) = a(n) odd: 3*a(n)+1, or a(n) even: a(n)/2
a
不是基于0的话,我不明白为什么您似乎在这里“基于0说话”:a(n) is the smallest number that was not part of any Collatz sequences for all a(0), …, a(n − 1).