如何在 c++ 中将 2^{128} 除以奇数

How to divide 2^{128} by an odd number in c++?

本文关键字:c++ 中将      更新时间:2023-10-16

如何在不使用任意多精度算术库的情况下,将 2^{128} 除以一个奇数(无符号 64 位整数(,这是一个更精确的底线?

问题在于即使使用 gcc,也无法表达 2^{128}。所以我正在考虑创建 192 位整数类型。但是,我不知道该怎么做(尤其是减法部分(。我希望发言的结果是一个无符号的数字。

对于任何奇数 d> 1,UINT128_MAX / d 等于 floor(2128/d(。

这是因为 2128/d 必须有一个余数,因为 2128 的唯一因数是 2 的幂(包括 1(,所以奇数 d(不包括 1(不能是除数。因此,2128/d 和 (2 128−1(/d 具有相同的积分商,UINT128_MAX为 2128−1。