角谷定理
对于一个大于一的整数n
如果n为偶数,则 n = n/ 2;
如果n为奇数 则 n = n * 3 + 1 ;
如此反复操作 n 的最终值一定为1.
#include <iostream>
using namespace std;
int main()
{
int n = 0;
cout << "请输入一个数n,1<n<100000" << endl;
cin >> n;
int i = 0;//次数
while (n > 1)
{
if (n % 2 == 0)
{
cout << n << "/2= " << n / 2 << endl;
n = n / 2;
i++;
}
else
{
cout << n << "*3+1= " << (n * 3 + 1) << endl;
n = 3 * n + 1;
i++;
}
}
cout << "所用计算次数为 " <<i << endl;
system("pause");
return 0;
}
该程序实现了角谷定理(Collatz猜想)的验证,对于大于1的整数n,通过不断进行n/2(n为偶数)或n*3+1(n为奇数)的操作,最终会得到1。程序输入一个1到100000之间的数n,并输出操作达到1所需的计算次数。

880

被折叠的 条评论
为什么被折叠?



