在 Mathematica 7 中连接两个整数

发布于 2024-11-09 07:38:40 字数 206 浏览 0 评论 0原文

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

cc[123, 4567] >>> 1234567

如果超过两个呢?

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

What is the most efficient way to concatenate two positive integers in Mathematica 7?

cc[123, 4567] >> 1234567

What about more than two?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北音执念 2024-11-16 07:38:40

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

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

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

ToExpression@StringJoin@IntegerString@#&

它基于 IntegerString可列出的

This will be slightly faster for many integers, than your last solution:

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

A more concise alternative is to accept a single argument, assuming it to be a list, rather than a sequence, of numbers to concatenate:

ToExpression@StringJoin@IntegerString@#&

which is based on IntegerString being Listable.

薄荷梦 2024-11-16 07:38:40

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

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

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

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

对于连接许多整数,以下比 Fold:

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

This only works properly for short integers because the output must be machine size, but it is the fastest I found:

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

For longer integers, the fastest I could find is:

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

For concatenating many integers, the following was faster than Fold on the one above:

FromDigits[Join @@ IntegerDigits[{##}]] & 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文