在Mathematica 7中连接两个整数

时间:2011-05-23 10:28:52

标签: wolfram-mathematica mathematica-7

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

cc[123, 4567]>> 1234567

两个以上呢?

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

2 个答案:

答案 0 :(得分:9)

对于许多整数来说,这比上一个解决方案稍快一些:

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

更简洁的替代方法是接受单个参数,假设它是要连接的数字的列表而不是序列:

ToExpression@StringJoin@IntegerString@#&

基于IntegerString Listable

答案 1 :(得分:3)

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

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

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

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

对于连接多个整数,以下内容比Fold更快:

FromDigits[Join @@ IntegerDigits[{##}]] &