您的位置:首页 > 产品设计 > UI/UE

Hailstone Sequence

2016-03-26 22:46 766 查看
无聊来个小科普。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;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: