题目描述:日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。请编程验证。
分析:
不妨设该任意自然数为 num;
由题干分析可得:
当num为偶数时(即num%2==0时),将num除以2,即num=num/2;
当num为奇数时(即num%2!=0时),将num乘以3加1,即num=num*3+1;
经过变换得到新的自然数,重复以上操作,直至num=1;
由分析可知,程序需要一个判断语句来判断num的奇偶性;
同时,操作需要重复进行,所以还需要一个循环语句。
输入
任一正整数
输出
演算的过程
样例输入
10样例输出
10/2=5 5*3+1=16 16/2=8 8/2=4 4/2=2 2/2=1
#include<iostream>
using namespace std;
int main()
{
int num;
cin>>num;
while(num!=1) //循环结束条件:num==1
{
if(num%2==0)//num为偶数时
{
cout<<num<<"/2="<<num/2<<"\n";
num/=2;
}
else //num为奇数时
{
cout<<num<<"*3+1="<<num*3+1<<"\n";
num=num*3+1;
}
}
}