整数分成若干部分的乘法和除法

Multiplication and division on integers split into parts

本文关键字:除法 干部 整数      更新时间:2023-10-16

有人知道我在哪里可以得到关于如何对存储在部分中的整数进行乘法和除法(甚至是模)的指令吗?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/