有一些特定的运算程序,算来算去,运算中的数字会陷入某些循环圈,再也跳不出来这种现象,可以称为数学中的"黑洞"。
"角谷猜想"就是其中的一个:任意一个自然数,如果它是偶数,则将它除以二;若它是奇数,则将它乘三,再加一……如此下去,经过有限步运算之内,其结果必然是一。
本代码是通过if/else嵌套循环实现的。
本代码只能运行输入正整数。
输入的正整数最大不得超过十的九次方,否则程序将无法运行。
#include <iostream>
using namespace std;
int num,i,a,b,c,d,e;
int main()
{
cout<<"请任意输入一个自然数:\n";
cin>>num;
i=1;
while(i<=3000000){
if(num%2==0)
num=num/2;
else
num=num*3+1;
i=i+1;
}
a=num;
if(num%2==0)
num=num/2;
else
num=num*3+1;
b=num;
if(num%2==0)
num=num/2;
else
num=num*3+1;
c=num;
if(num%2==0)
num=num/2;
else
num=num*3+1;
d=num;
if(num%2==0)
num=num/2;
else
num=num*3+1;
e=num;
if(a==1)
cout<<"已进入循环:";
if(b==1)
cout<<"已进入循环:";
if(c==1)
cout<<"已进入循环:";
if(a==1)
cout<<a<<" "<<b<<" "<<c;
else
if(b==1)
cout<<b<<" "<<c<<" "<<d;
else
if(c==1)
cout<<c<<" "<<d<<" "<<e;
else
if(d==1)
cout<<d<<" "<<e<<" "<<a;
else
if(e==1)
cout<<e<<" "<<a<<" "<<b;
else
cout<<"未进入循环,请重试";
return 0;
}