一、题目描述
给定一个不超过1000的正整数n,如果它是偶数,n=n/2,如果它是奇数,n=(3n+1)/2。问:需要经过多少步,才能得到n=1?
输入:正整数n
输出:步数
二、解题思路
因n最后一定会等于1,故我们可以设置循环:当n不等于1时,对n进行奇偶判断,并进行对应操作。循环结束时输出结果即可。
三、源代码
#include<stdio.h>
int main()
{
int i=0,a;
scanf("%d",&a);
while(a!=1)
{
if(a%2==0)
{
a=a/2;
i++;
}
else
{
a=(3*a+1)/2;
i++;
}
}
printf("%d",i);
return 0;
}