1001. 害死人不偿命的(3n+1)猜想 (15)

以后我每学一门语言,都要用这种语言把这道题写一遍。

Go版

package main

import "fmt" 
func main(){
	var n, step int
	fmt.Scanf("%d", &n)
	for ;n != 1;{
		if n % 2 == 1{ 
			n = (3*n+1)/2
		}else{
			n = n/2
		}
		step++
	}
	fmt.Println(step)
}

C/C++版

#include<cstdio>
int main(){
	int n;
	scanf("%d",&n);
	int cnt=0;
	while(n!=1){
		if(n&1)	 n=(3*n+1)/2;
		else     n=n/2;
		cnt++;
	}
	printf("%d",cnt);
	return 0;
}

Python版

n = int(input())
cnt = 0
while n != 1:
    if(n&1):  #位运算,如果是奇数结果就为1,偶数就为0
        n=(3*n+1)//2 #这里两个斜杠表示整除
        cnt+=1
    else:
        n=n//2
        cnt+=1
print(cnt)
	

Java版

import java.util.Scanner;
public class Main{

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int step = 0;
		while(n!=1) {
			if(n%2==1) {
				n=(3*n+1)>>1;
			}else {
				n=n>>1;
			}
			step++;
		}
	System.out.println(step);
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值