Talvez seu factor
não tenha sido criado com GMP
, por isso não é possível manipular um número maior que 2**64-1
:
$ factor 18446744073709551616
factor: '18446744073709551616' is too large
$ factor 18446744073709551615
18446744073709551615: 3 5 17 257 641 65537 6700417
Executando este comando para verificar se factor
foi criado com 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)
O limite pode ser maior em algumas máquinas (o número tem que caber no tipo uintmax_t
), mas seu número é um número de 256 bits e nenhuma máquina comum suporta tão grande uintmax_t
, se houver. / p>
Observe que o utilitário factor
pode ser compilado com o suporte GMP . Nesse caso, não há efetivamente nenhum limite no tamanho do número. Parece que sua distribuição não ativou o suporte a GMP (o que faz sentido, já que isso adicionaria uma dependência em uma biblioteca extra a um pacote do sistema principal para um recurso raramente usado).
Se você tem perl
, pode experimentar factor.pl
program no módulo Math::Prime::Util
:
$ /home/cuonglm/.cpan/build/Math-Prime-Util-0.31-9c_xq3/bin/factor.pl 115792089237316195423570985008687907852837564279074904382605163141518161494337
115792089237316195423570985008687907852837564279074904382605163141518161494337: 115792089237316195423570985008687907852837564279074904382605163141518161494337