如何添加或乘以数字的数字

时间:2013-07-06 11:17:39

标签: matlab addition algebra

正如标题所说,我想知道是否可以在matlab中添加或乘以数字的数字

例如:

表示数字

123456789

添加数字,即

1+2+3+4+5+6+7+8+9 =>45 =>4+5 => 9

预先感谢您的帮助

1 个答案:

答案 0 :(得分:1)

数字方法

A  = 35356536576821;
A  = abs(A);
xp = ceil(log10(A)):-1:1;

while ~isscalar(xp)
    A  = sum(fix(mod(A,10.^xp)./10.^[xp(2:end) 0]));
    xp = ceil(log10(A)):-1:1;
end    

Char方法

A = '35356536576821';
A = char(regexp(A,'\d+','match'));
while ~isscalar(A)
    A = num2str(sum(A - '0'));
end

两者,首先取绝对数(剥去负数)然后:数字用log10()计数一个数字有多少位数,通过模数和除数提取求和的数字,而char方法转换对于隐式转换为- '0'的数字,求和并再次转换回字符串。

这两种方法都可能受到浮点近似的影响,但数字方法肯定会更多地暴露于它:

A  = 11111111111111111;
xp = ceil(log10(A)):-1:1;
fix(mod(A,10.^xp)./10.^[xp(2:end) 0])
ans =
  Columns 1 through 13
     1     1     1     1     1     1     1     1     1     1     1     1     1
  Columns 14 through 17
     1     1     1     2

要使用char方法进行近似,第一个总和应超过16位数。