B1001:害死人不偿命的(3n+1)猜想(15')

思路:循环判断。n为奇数,n=(3*n+1)/2;n为偶数,n/=2。

代码:

#include<stdio.h>
int main(){
    int i,n;
    do{
        scanf("%d",&n);
    }
    while(n>1000||n<=0);  //输入不大于1000的正整数
    if(n==1){
        printf("0");  //n为1直接输出
    }
    else{
        for(i=0;n!=1;i++){
            if(n%2==1){
                n=(3*n+1)/2;
            }
            else n/=2;
        }
    printf("%d",i);
    }
    return 0;
}

二刷代码:

#include<stdio.h>
int main(){
    int n,count = 0;
    scanf("%d",&n);
    while(n != 1){
        if(n%2 == 0){
            n /= 2;
        }
        else{
            n = (3*n+1)/2;
        }
        count ++;
    }
    printf("%d",count);
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-25 17:22
点赞 评论 收藏
分享
震撼沃玛一整年:查看图片
点赞 评论 收藏
分享
醉蟀:你不干有的是人干
点赞 评论 收藏
分享
06-26 15:35
武汉大学 运营
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务