标题:☆★百分英雄帖★☆ 如果要你表示一个超过千万位的大整数你会用什么办法实现 ...
取消只看楼主
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
结帖率:100%
已结贴  问题点数:100 回复次数:4 
☆★百分英雄帖★☆ 如果要你表示一个超过千万位的大整数你会用什么办法实现?
在处理大数运算的时候,我们习惯用到的办法是用基10、基10000或者基32768的办法把相应的数字存放到数组的元素中去,数组中的一个元素存放相应的一个数位的数字,然后整个数组就是我们要表示的大整数。
但是虽然C本身并没有规定数组元素个数的最大值,但是编译器都会有自己的局限,比如:
TC2.0 数组最多元素个数为16383(TC编译器限制)
GCC for windows 数组最多元素个数为520756(经试验得到的不出错的最大值)
..........
显然,用数组表示大数的方法似乎不能很好的解决千万位数量级的大整数,那么如果是你的话你会用什么数据结构来表示这样的大整数呢??当然我们可以想到不少的办法,但是如果我们考虑这么大的一个数需要进行加减乘除的四则运算的时候,兼顾效率,你认为什么处理办法是最优的?


[ 本帖最后由 jack10141 于 2010-8-29 01:45 编辑 ]
搜索更多相关主题的帖子: 办法 英雄 整数 
2010-08-29 01:43
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
得分:0 
以下是引用御坂美琴在2010-8-29 02:43:15的发言:

你在搞笑吧?我直接开个64M的数组都不成问题,这个数组能表示2亿位的大整数了,御坂回答
那么你来说说进行四则运算的时候,效率如何更高??

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-29 21:44
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
得分:0 
以下是引用pkwangxinjun在2010-8-29 22:22:00的发言:

采用数组存储    超长的数字计算的话可以采用满9999进进一的方法来
这个论坛里以前不是有个疯狂编程的例子吗  求2的十万次幂 楼主可以看下哈
hehe 2的10W次幂,结果数量级达不到10进制的千万数量级吧?差得很远呢!!

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-30 08:54
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
得分:0 
以下是引用succubus在2010-8-30 15:34:18的发言:

用2楼给出的gmp库或者其他比较成熟的大数库
除非是为了练习自己的编程技巧
否则没必要重新发明车轮
而且你重新发明的车轮性能未必好。。。
我现在的确就是想看看大数运算里面的技巧,呵呵

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-30 18:25
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
得分:0 
回复 14楼 succubus
现有的几个大数运算库我都知道,但是核心算法还是搞不很明白啊。。。。。。。。

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-09-01 18:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-317086-1-1.html




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

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