在 Mathematica 7 中连接两个正整数的最有效方法是什么?
cc[123, 4567]
>>1234567
超过两个怎么办?
cc[123, 4, 567, 89]
>>123456789
在 Mathematica 7 中连接两个正整数的最有效方法是什么?
cc[123, 4567]
>>1234567
超过两个怎么办?
cc[123, 4, 567, 89]
>>123456789
对于许多整数,这将比您上一个解决方案稍快:
ToExpression[StringJoin @@ Map[IntegerString, {##}]] &
一个更简洁的选择是接受一个参数,假设它是一个列表,而不是一个序列,要连接的数字:
ToExpression@StringJoin@IntegerString@#&
这是基于IntegerString
存在Listable
。
这仅适用于短整数,因为输出必须是机器大小,但它是我发现的最快的:
Compile[{{a, _Integer}, {b, _Integer}},
b + a 10^Floor[1 + Log[10, b]]
]
对于更长的整数,我能找到的最快的是:
FromDigits[{##}, 10^IntegerLength@#2] &
对于连接许多整数,以下比Fold
上面的更快:
FromDigits[Join @@ IntegerDigits[{##}]] &