我为R 编程语言编写了一个库,名为RcppBigIntAlgos,它可以在合理的时间内分解这些类型的数字(不像@kelalaka 的答案中使用的优秀的CADO-NFS 库那样快)。
正如其他人所指出的,除非您投入大量时间,否则您自己推出的任何程序都很难计算您的数字。就我个人而言,我已经投入了数千小时。您的里程可能会有所不同。
这是我在原版 R 控制台(无特殊 IDE)中运行的测试:
numDig99 <- "112887987371630998240814603336195913423482111436696007401429072377238341647882152698281999652360869"
## install.packages("RcppBigIntAlgos") if necessary
library(RcppBigIntAlgos)
prime_fac <- quadraticSieve(numDig99, showStats=TRUE, nThreads=8)
Summary Statistics for Factoring:
112887987371630998240814603336195913423482111436696007401429072377238341647882152698281999652360869
| MPQS Time | Complete | Polynomials | Smooths | Partials |
|--------------------|----------|-------------|------------|------------|
| 11h 13m 25s 121ms | 100% | 11591331 | 8768 | 15707 |
| Mat Algebra Time | Mat Dimension |
|--------------------|--------------------|
| 1m 39s 519ms | 24393 x 24475 |
| Total Time |
|--------------------|
| 11h 15m 12s 573ms |
就像@kelalaka 一样,我们获得了相同的哈希值(同样,在R 控制台中运行):
system(sprintf("printf %s | openssl sha512", prime_fac[1]))
faebc6b3645d45f76c1944c6bd0c51f4e0d276ca750b6b5bc82c162e1e9364e01aab42a85245658d0053af526ba718ec006774b7084235d166e93015fac7733d
system(sprintf("printf %s | openssl sha512", prime_fac[2]))
27c64b5b944146aa1e40b35bd09307d04afa8d5fa2a93df9c5e13dc19ab032980ad6d564ab23bfe9484f64c4c43a993c09360f62f6d70a5759dfeabf59f18386
RcppBigIntAlgos::quadraticSieve 中实现的算法是Multiple Polynomial Quadratic Sieve。有一个更有效的二次筛版本,称为Self Initializing Quadratic Sieve,但是,在野外没有那么多文献可用。
这是我的机器规格:
MacBook Pro (15-inch, 2017)
Processor: 2.8 GHz Quad-Core Intel Core i7
Memory; 16 GB 2133 MHz LPDDR3
这是我的R 信息:
sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Catalina 10.15.7
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] RcppBigIntAlgos_1.0.1 gmp_0.6-0
loaded via a namespace (and not attached):
[1] compiler_4.0.3 tools_4.0.3 Rcpp_1.0.5