在Mathematica 7中连接两个正整数的最有效方法是什么?
cc[123, 4567]
>> 1234567
两个以上呢?
cc[123, 4, 567, 89]
>> 123456789
答案 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[{##}]] &