2015-09-03 4 views
1

Я пытаюсь факторизовать большое число со следующим кодом:Как факторизовать большое число

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 

Это явно не правильная факторизация, потому что мое число нечетное, но factorize возвращается 2 как фактор , В чем проблема?

ответ

4

Попробуйте создать BigZ значения, используя строку:

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

Я считаю, что это происходит не так для вас является то, что при вводе числовых литералов, R сохраняет его в представлении с плавающей запятой, потеря точности. Вам нужно создать представление bigz перед передачей его факторизации, и для того, чтобы сохранить полную точность, вы должны передать его as.bigz в виде строки.

Смежные вопросы