如何在Mathematica 7中连接两个正整数的最有效方式?

cc[123, 4567] >> 1234567

多两个?

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

有帮助吗?

解决方案

许多整数比你的上一个解决方案略微更快:

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

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

ToExpression@StringJoin@IntegerString@#&
.

基于生成的世代aticetagcode是生成的。

其他提示

这只适用于短整数,因为输出必须是机器尺寸,但它是我找到的最快:

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

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

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

要连接许多整数,则在上面的一个上述情况比生成频率速度更快:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top