学习目标:120秒内 一气呵成 打完代码,并且运行正确,并且提交正确。
【角谷猜想】 对于任意大于1的自然数n,若n为奇数,则将n变为3*n+1,否则将n变为n的一半。经过若干次这样的变换,一定会使n变为1。 输入n,求最后到达1的步数(不包括n本身)。
例如
输入:11
输出:14
s=0;
while(n!=1)//如果满足括号的条件就继续进入循环
{
// 循环里面做两件事,对n的改变,和对s加1
if(n%2==0)
{
改变一下n。 n变为原来的一半
}
else
{
改变一下n。 n变为原来的3倍+1
}
s++;//就是s=s+1,表示增加1步操作
}
【题意】
给出一个数x,求x通过角谷猜想变成1需要的操作操作次数
【输入格式】
输入一个数x
【输出格式】
输出所需要的次数
【输入样例】
11
【输出样例】
14
【练习】
【求最大公约数-辗转相除法】 输入任一的自然数A, B, 求A , B的最小公倍数和最小公约数。
输入:51 34 输出:17
之前学过函数版,现在学习一下while实现的非函数版
#include<cstdio>
using namespace std;
int main()
{
int a,b,t;
scanf("%d%d",&a,&b);
while(a!=0)
{
t=a;
a=b%a;
b=t;
}
printf("%d\n",b);
return 0;
}