在考拉兹猜想假设,如果你把任意正整数,然后重复下面的算法足够的时间:
if number is odd, then multiply by three and add one
if number is even, then divide by two
您最终将得到1。它似乎总是可以工作,但是从未证明它总是可以工作。
您已经在计算达到1所需的时间了,所以我想我会稍微调整一下。
从给定的正整数开始,计算达到1所需的时间(其“停止时间”)。然后找到该号码的停止时间。
重复直到达到1,或者直到达到100次迭代的完全任意限制。在前一种情况下,打印所需的迭代次数。在后一种情况下,请打印“ Fail”或您选择的其他一致输出,只要它不是integer即可1≤n≤100
。您可能不会为此选项输出空字符串。但是,允许输出[1,100]范围之外的整数。
例子:
Input: 2
2->1
Output: 1
Input: 5
5->5->5->5->5->...
Output: Fail
Input: 10
10->6->8->3->7->16->4->2->1
Output: 8
Input: 100
100->25->23->15->17->12->9->19->20->7->16->4->2->1
Output: 13
Input: 10^100
10^100->684->126->108->113->12->9->19->20->7->16->4->2->1
Output: 13
Input: 12345678901234567890
12345678901234567890->286->104->12->9->19->20->7->16->4->2->1
Output: 11
Input: 1
--Depending on your code, one of two things may happen. Both are valid for the purposes of this question.
1
Output: 0
--Or:
1->3->7->16->4->2->1
Output: 6
根据我的计算10^100
,12345678901234567890
使用的语言仅支持该大小的实数,如果您的语言更准确,则可能会得到不同的结果。
计分
由于这是代码高尔夫球,因此字节数最短的答案将获胜。