The 3n + 1 problem

#include <iostream>
#include <vector>
using namespace std;
int main()
{
int m,n;
while (cin>>m>>n)
{
int result=0,max,min;
//①此处最为关键,因为题目中并未指明输入大的在前
if(m<=n)
{
min=m;
max=n;
}
else
{
min=n;
max=m;
}
for(int i=min;i<=max;i++)
{
int count=0;
int temp=i;
while(temp!=1)
{
count++;
if(temp%2)
temp=3*temp+1;
else
temp=temp/2;
}
//②最终的终止未计算在内,所以需要+1
count++;
if (count>result)
result=count;
}
cout<<m<<" "<<n<<" "<<result<<endl;
}
}
本文介绍了一个解决3n+1问题的C++程序。该程序通过输入两个整数,计算并输出在这两个整数范围内的所有数字经过3n+1操作序列的最大长度。程序首先确定输入范围,并遍历该区间内的每个整数,使用循环递归计算3n+1序列直至到达1,记录并比较序列长度,最后输出最大长度。
2161

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



