| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 958 人关注过本帖
标题:100万以下的数字的最长序列
取消只看楼主 加入收藏
tompobing
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:260
专家分:809
注 册:2012-12-9
结帖率:78.13%
收藏
已结贴  问题点数:20 回复次数:1 
100万以下的数字的最长序列
以下迭代序列定义在整数集合上:
 
n n/2 (当n是偶数时)
 n 3n + 1 (当n是奇数时)
 
应用以上规则,并且以数字13开始,我们得到以下序列:
 
13 40 20 10 5 16 8 4 2 1
 
可以看出这个以13开始以1结束的序列包含10个项。虽然还没有被证明(Collatz问题),但是人们认为在这个规则下,以任何数字开始都会以1结束。
 以哪个不超过100万的数字开始,能给得到最长的序列?
注意: 一旦序列开始之后,也就是从第二项开始,项是可以超过100万的。

又是一个大数计算的,我写的程序直接按照题意求解,电脑算不出来了,求一个高效率的算法



#include <stdio.h>
int main()
{
    __int64 i;
    __int64 j=0;
    int count=0;
    int maxcount=0;
    for(i=3;i<1000000;i++)
    {
        count=0;
        while(1)
        {
            if(i/1==1&&i%1==0)
            {
                break;
            }
            if(i%2==0)
            {
                i/=2;
                ++count;
                continue;
            }
            if(i%2!=0)
            {
                i=3*i+1;
                ++count;
                continue;
            }
        }
        if(count>maxcount)
        {
            maxcount=count;
            j=i;
        }
    }
    printf("%I64d     %d\n",j,maxcount);
    return 0;
}


[ 本帖最后由 tompobing 于 2013-3-27 21:35 编辑 ]
2013-03-27 21:24
tompobing
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:260
专家分:809
注 册:2012-12-9
收藏
得分:0 
貌似是程序写的有问题。。。
2013-03-28 20:35
快速回复:100万以下的数字的最长序列
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012003 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved