2017-02-09 127 views
1

我试图在数字2^1000中求和每个数字,例如,25346 = 2 + 5 + 3 + 4 + 6 = 20中的每个数字的总和。在MATLAB中用vpa处理大数字

我写在Matlab代码看起来像这样:

clc, clear all, close all, 
x=2^1000; 
x=vpa(x,400); 
sum=0; 
while x>0 
    num=mod(x,10); 
    sum = sum+num; 
    x=floor(x/10); 
end 
sum % = 1349, correct answer should be 1366 

对于更小的数字,此代码的工作。我猜测vpa命令有些可疑,但我无法弄清楚什么。

任何人有任何想法?在matlab中做这个更简单快捷吗?

回答

1

合并这两条线,因为它显示在文档中:

x=2^1000; 
x=vpa(x,400); 

这个

x=vpa(2^1000,400); 
+0

这给了我同样的结果。 – Phiger

+0

@Phiger vpa(sym(2)^ 1000)呢? – BCartolo

+0

这给出了相同的结果。 – Phiger