9

在 Mathematica 7 中连接两个正整数的最有效方法是什么?

cc[123, 4567]>>1234567

超过两个怎么办?

cc[123, 4, 567, 89]>>123456789

4

2 回答 2

9

对于许多整数,这将比您上一个解决方案稍快:

ToExpression[StringJoin @@ Map[IntegerString, {##}]] &

一个更简洁的选择是接受一个参数,假设它是一个列表,而不是一个序列,要连接的数字:

ToExpression@StringJoin@IntegerString@#&

这是基于IntegerString存在Listable

于 2011-05-23T10:59:01.583 回答
3

这仅适用于短整数,因为输出必须是机器大小,但它是我发现的最快的:

Compile[{{a, _Integer}, {b, _Integer}}, 
  b + a 10^Floor[1 + Log[10, b]]
]

对于更长的整数,我能找到的最快的是:

FromDigits[{##}, 10^IntegerLength@#2] &

对于连接许多整数,以下比Fold上面的更快:

FromDigits[Join @@ IntegerDigits[{##}]] & 
于 2011-05-23T10:29:48.863 回答