3n+1问题

问题描述:

对于任意大于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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值