整数分成若干部分的乘法和除法
Multiplication and division on integers split into parts
有人知道我在哪里可以得到关于如何对存储在部分中的整数进行乘法和除法(甚至是模)的指令吗?im制作将CCD_ 1存储为CCD_ 2的库。
您熟悉GMP
库吗?为什么不使用它而不是实现自己的呢?
- GNU多精度算术库
从上面的链接,您可以下载适用于Unix操作系统的tar.bz
文件。
对于Windows,请参阅以下链接:
- Windows平台GMP安装说明
它有很多关于MinGW、MSVC++和CgyWin的信息和安装文件。下载适合您需要的内容。你也可以看到这些链接:
- 如何使用MPIR在Windows上安装和运行GMP
- 用Visual Studio构建GMP库?(叠加主题)
在你完成安装和配置后,你想知道如何使用GMP进行编程,为此浏览这些链接:
- GMP基础
- GMP手册
以这种方式拆分数字是Karatsuba乘法的理想先决条件。考虑:
x = x1 * 2^k + x2
y = y1 * 2^k + y2
使用学校乘法,你需要4次乘法:
x*y = (x1*y1) * 2^(2*k) + (x1*y2 + x2*y1) * 2^k + x2*y2
Karatsuba需要更多的加法,但只需要3次乘法:
p1 = x1 * y1
p2 = x2 * y2
x*y = p1 * 2^(2*k) + ((x1+x2)*(y1+y2) - p1 - p2) * 2^k + p2
当然,问题在于如何处理溢出。
http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic这可能是一个良好的开端。已经有很多开源库了
看看各种大整数库。这是谷歌找到的https://mattmccutchen.net/bigint/
相关文章:
- 在除法中不需要四舍五入
- 在TFHE(完全快速同态加密)上执行除法
- 使用 int 表示浮点除法 C++
- 而循环:简单的除法程序输出零,不明白为什么
- 余数除法和不允许除以零 (c++) 时遇到问题
- 如何确定涉及 C++ 中除法的算术表达式的数据类型
- 如何使用除法和for_each?
- C++:奇怪的除法输出
- 分配给浮点数的积分文字除法 - 为什么结果是错误的?
- 除法函数返回错误的值
- 检查向量是否使用除法和阻抗算法进行排序
- 不使用算术运算符的除法
- C++编译器能在编译时计算出文字的除法结果吗
- 浮点 由于除法语句而导致的 c++ 异常
- 特征矩阵向量除法
- 在早期的 C 和 C++ 编译器中,手动位移位与乘法和除法的相关性如何?
- 用除法反转向量的元素
- 按运行时常量值重复整数除法
- 将 int 128 除法提升为浮点数
- 用于 3D 矢量的高效除法运算符