【发布时间】:2015-06-13 23:24:59
【问题描述】:
如果我想计算 a^b mod c 那么有一种有效的方法可以做到这一点,而无需完整计算 a^b。
然而,在编程时,如果我写f g x,那么无论f如何,都会计算g(x)。
J 在特殊情况下提供了 f 和 g 的合成,模幂函数就是其中之一。例如,以下运行速度非常快。
1000&| @ (2&^) 10000000x
这是因为'atop' 连词@ 告诉语言尽可能组合函数。如果我删除它,它会慢得难以忍受。
但是,如果我想使用 x^x ,那么 ^~ 将不再有效,并且我会遇到大值的限制错误。然而,绑定这些大值确实有效。
所以
999&| @ (100333454&^) 100333454x
执行得又快又好,但是
999&| @ ^~ 100333454x
给我一个限制错误 - RHS 太大了。
我是否认为在这种情况下,J 没有使用高效的幂模算法?
【问题讨论】:
标签: modulo j exponentiation