您的位置:首页 > 其它

3n+1问题

2017-02-28 13:40 183 查看
问题描述:

对于任意大于1的自然数n,若n为奇数,则n=3*n+1,否则n=n/2。经过若干次变换,则n一定会变会1

例如:6->3->10-> 5-> 16-> 8-> 4-> 2-> 1 

要求:

输入n,输出的变换次数,n<=10^9;

说明:

int范围为: -2147483628 -2147483647 即2*31 ~ 2*31-1

long long范围为2^63 ~ 2^63-1唯一的区别就是将%d改为%lld但有些地方需要写成%I64d 

这dev中,这两种写法都可以。 

#include<stdio.h>
int main()
{
long long n;
//int n; long long n2=n;
int count=0;//循环次数
scanf("%I64d",&n);
while(n>1)
{
if(n%2==0)
n=n/2;
else
n=3*n+1;
count++;
//printf("%d %d\n",n,count);
}
printf("%d\n",count);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: