Utilities

因數太大

  • July 9, 2014

我正在嘗試使用factor實用程序,但它告訴我數字太大。是否有任何實用程序可以做些什麼factor但不能告訴數字太大?

也許你factor不是用 建構的GMP,所以它不能處理大於2**64-1

$ factor 18446744073709551616
factor: `18446744073709551616' is too large
$ factor 18446744073709551615
18446744073709551615: 3 5 17 257 641 65537 6700417

執行此命令以檢查是否使用以下命令factor建構GMP

$ ldd /usr/bin/factor 
       linux-vdso.so.1 (0x00007fffda1fe000)
       libgmp.so.10 => /usr/lib64/libgmp.so.10 (0x00007faae00f5000)
       libc.so.6 => /lib64/libc.so.6 (0x00007faadfd46000)
       /lib64/ld-linux-x86-64.so.2 (0x00007faae037c000)

某些機器上的限制可能更高(數字必須適合uintmax_t類型),但您的數字是 256 位數字,沒有普通機器支持這麼大的數字uintmax_t,如果有的話。

請注意,該factor實用程序可以在GMP支持下進行編譯。在這種情況下,數字的大小實際上沒有限制。您的發行版似乎沒有啟動 GMP 支持(這是有道理的,因為它會為核心系統包添加對額外庫的依賴以實現很少使用的功能)。

如果你有perl,你可以嘗試factor.plMath::Prime::Util模組中包含程序:

$ /home/cuonglm/.cpan/build/Math-Prime-Util-0.31-9c_xq3/bin/factor.pl 115792089237316195423570985008687907852837564279074904382605163141518161494337
115792089237316195423570985008687907852837564279074904382605163141518161494337: 115792089237316195423570985008687907852837564279074904382605163141518161494337

引用自:https://unix.stackexchange.com/questions/141573