首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问大数高精度四则运算怎么更高效

2012-06-03 
请教大数高精度四则运算如何更高效?我用C++模拟自己算加减乘除,虽然有一定的精度,但发现效率很低,还综述出

请教大数高精度四则运算如何更高效?
我用C++模拟自己算加减乘除,虽然有一定的精度,但发现效率很低,还综述出现溢出,请教大家,如何提高速度和正确性呢?有没有相关的类或者库可以提供使用呢?因为需要,计算精度位数要达到100万位以上,而且数据量较大,希望各位都能不吝赐教,谢谢大伙!

[解决办法]
LZ去这里看看吧:GMP
[解决办法]
简单的说就是要使用二进制进行计算,放弃一个字节一个10进制位的简陋做法。
[解决办法]
《C语言接口与实现》一书内有详解。

[解决办法]
100万位乘法基本只能FFT了。能用库那就去傍GMP吧。
[解决办法]
可以把大数字符串按n个数字一组切分成 一个数组。
比如 101 1234 5678 9123
保存到数组中 a[5] ={101, 1234, 5678, 9124}
然后类似于10进制的各位加法,对a[5]+b[5]的各位进行加法
类似如下:

int carray = 0;//进位
for (i = 4; i>=0; i--){
 int tmp = a[i] + b[i] + carry;
 c[i] = tmp % 10000;
 carry = tmp / 10000;

热点排行