如何分解一个大整数

aar*_*thi 2 algorithm r bigdecimal floating-point-precision

我正在尝试使用以下代码分解一个大整数:

library(gmp)
as.bigz(factorize( 113423713055421844361000443))
Big Integer ('bigz') object of length 38:
#  [1] 2       2       2       2       2       2       2       2       2       2       2
# [12] 2       2       2       2       2       2       2       2       2       2       2
# [23] 2       2       2       2       2       2       2       2       2       2       2
# [34] 2       3       647     1134247 2998823
Run Code Online (Sandbox Code Playgroud)

这显然不是正确的分解,因为我的整数是奇数但factorize返回 2 作为因子。问题是什么?

Wee*_*ble 5

尝试使用字符串创建 bigz 值:

> factorize(as.bigz("113423713055421844361000443"))
Big Integer ('bigz') object of length 4:
[1] 67003      29881      9119521    6212157481
Run Code Online (Sandbox Code Playgroud)

我相信你的问题是当你输入数字文字时,R 将它存储在浮点表示中,失去了精度。您需要在将 bigz 表示形式传递给 factorize 之前创建它,并且为了保持完全精度,您必须将其as.bigz作为字符串传递给。