当前位置: 首页 > 程序语言 >角谷猜想求助~~~

角谷猜想求助~~~

作者 郑成功1992
来源: 小木虫 200 4 举报帖子
+关注

新手求助,角谷猜想:对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。
程序要求输入一个整数,将经过处理得到1的过程输出来。

我的程序是:
#include<iostream>
#include<cstdio>

using namespace std;

int main()
{
        unsigned long long int n = 0;
        scanf("%d",&n);
       
        while(n != 1)
        {
                if(n % 2)
                {
                        printf("%u*3+1=%u\n",n,n*3+1);
                        n = n*3+1;
                }
                else
                {
                        printf("%u/2=%u\n",n, n/2);
                        n /= 2;
                }
        }
       
        printf("End"
       
        return 0;
}


输入159487的时候,输出不正确,求大神指点~
输出里面有这一行:
1699000271*3+1=802033518     出错 返回小木虫查看更多

今日热帖
  • 精华评论
  • 郑成功1992

    来人解释一下呗~~~

  • 郑成功1992

    额,来个人指点一下呗~

  • hux0730

    1699000271*3=5097000813=5*10^9,是不是越界了?你选一个更大的数试试,是不是也出错。这个那个瀑布数吗?

  • sspa9999

    我猜是%u能够输出的位数有限,unsigned long long 需要用其它格式来输出

猜你喜欢
下载小木虫APP
与700万科研达人随时交流
  • 二维码
  • IOS
  • 安卓