-2

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

例如:

对于一个数字

123456789

添加数字,即

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

提前感谢您的帮助

4

1 回答 1

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    

字符方法

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 位数字。

于 2013-07-06T13:17:49.597 回答