2015-09-03 6 views
1

Je suis en train de factoriser un grand entier avec le code suivant:Comment factoriser un grand entier

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 

Ceci est clairement pas la factorisation correcte, parce que mon entier est impair, mais factorize retourne 2 en tant que facteur . Quel est le problème?

Répondre

4

Essayez de créer la valeur bigz en utilisant une chaîne:

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

Je crois que ce qui va mal pour vous est que lorsque vous entrez les littéraux numériques, stocke R dans une représentation en virgule flottante, perte de précision. Vous devez créer la représentation bigz avant de passer à factoriser, et afin de garder une précision complète, vous devez le passer à as.bigz sous forme de chaîne.