以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 算法理论与分析 』 (http://bbs.xml.org.cn/list.asp?boardid=60) ---- [讨论]用c实现大数类型 (http://bbs.xml.org.cn/dispbbs.asp?boardid=60&rootid=&id=24065) |
-- 作者:binaryluo -- 发布时间:11/8/2005 1:28:00 PM -- [讨论]用c实现大数类型 在java里有一个类BigInteger可以提供了对任意大(位数大)的整数的各种运算操作,现在想自己在c里实现一个有相同功能的类型以供喜欢用c的程序员使用。 我初想了一下:首先应该建立一个数据类型用来保存大数,然后再定义该大数类型上的各种运算。但是因为比如在乘方运算的时候如果算法设计的不好的话感觉一个乘方运算会很慢,所以想跟大家讨论下。 typedef struct BigInt{ 加法示例: -------------------- 乘法实例: ----------------------
|
-- 作者:binaryluo -- 发布时间:11/12/2005 12:32:00 AM -- 怎么看的人多,回的人少啊??大家一起交流下嘛。。。 |
-- 作者:northenstar -- 发布时间:11/28/2005 8:51:00 AM -- 你的数据结构一个空间存放一位数字,这样设计既浪费空间,时间效率也不高。可以考虑一个空间直接存放IntMAX的思路 |
-- 作者:binaryluo -- 发布时间:11/28/2005 11:57:00 PM -- 我还考虑过用数组来存,但是输入的数字长度是随机的,所以用数组每次输入一个数据位的时候还要判断是否已经溢出,溢出的话还要重新扩充数组空间,也是不很好。 顺便问下什么是IntMAX? |
-- 作者:waruqi -- 发布时间:12/19/2005 7:55:00 PM -- 不错 |
-- 作者:binaryluo -- 发布时间:12/21/2005 11:24:00 PM -- 现在加法和减法已经实现了,因为忙所以过久在做乘法和除法。 |
-- 作者:wxs1231 -- 发布时间:2/17/2006 11:10:00 PM -- 下面是我以前搞ACM时写过的大数类(希望对你有用): //大数类 #include<iostream> #include<string> #include<iomanip> #include<algorithm> using namespace std; #define MAXN 9999 class BigNum{ bool Bigger(const BigNum &) const; len = 0; big = T.len > len ? T.len : len; return *this; big = T.len > len ? T.len : len; a.Add(n); b.Sub(T); for(i = 0 ; i < len ; i++){ for(i = len - 1 ; i >= 0 ; i--){ cout << a[len - 1]; |
-- 作者:yinbodotcc -- 发布时间:3/19/2006 11:46:00 AM -- 你的这种做法效率太低,很不合适 |
-- 作者:binaryluo -- 发布时间:3/20/2006 10:32:00 PM --
能说出你的想法吗?? |
-- 作者:Quasi_Algorithmist -- 发布时间:4/21/2006 4:25:00 PM -- 我自己的+-* / 函数全编好啦,工作的很完美。下一步想编开方函数。 不过我不在乎执行的速度,只是玩玩。 |
-- 作者:jq -- 发布时间:4/27/2006 11:00:00 AM -- 用c++语言编写的,用数组来存储,每个数组单元可以保存四位数据,这样就可以节约一些空间,数组是动态生成的,不必重新扩充数组空间,本人实现过+,-,×,包括有符号的数据,时间效率还不错,可以试一下 |
-- 作者:binaryluo -- 发布时间:5/4/2006 7:42:00 PM -- “每个数组单元可以保存四位数据”——能解释下吗? |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
8,843.750ms |