无聊来个小科普。Hailstone Sequence问题是一个著名的数学问题,至今没有证明其正确性,也没证明其是错误的,即任何一个正整数N,如果是偶数的话就除以2,如果是奇数的话就乘以3再加上1,最后这个数都会变为1。公式如下:
求出这个序列长度的C++代码如下:
#include <iostream>
using namespace std;
int hailstone(int n);
int main()
{
int n;
while(cin >> n)
cout << n << ":" << hailstone(n) << endl;
return 0;
}
int hailstone(int n)
{
int length = 1;
while(n > 1)
{
(n % 2 == 0) ? (n /= 2) : (n*=3)++;
++length;
}
return length;
}
当然也可以把这个序列打印出来:
#include <iostream>
using namespace std;
int hailstone(int n);
int main()
{
int n;
while(cin >> n)
cout << "(Num:" << n << " Length:" << hailstone(n) << ")" << endl;
return 0;
}
int hailstone(int n)
{
int length = 1;
cout << 1 << " ";
while(n > 1)
{
cout << n << " ";
(n % 2 == 0) ? (n /= 2) : (n*=3)++;
++length;
}
return length;
}