【发布时间】:2012-02-19 00:23:37
【问题描述】:
我需要多次执行以下操作:
- 取两个整数
a, b - 计算
a * b mod p,其中p = 1000000007和a, b与p的数量级相同
我的直觉是天真
result = a * b
result %= p
效率低下。我可以优化乘法模 p,就像用 pow(a, b, p) 优化的幂模 p 一样吗?
【问题讨论】:
-
嗯,一个简单的优化是将所有这些合并到一个语句中......在我的测试中它快了大约 6%。
-
谷歌搜索“快速模乘”会产生大量论文,例如this one。
-
9 位数字可能太小,对于诸如 Montgomery reduction 之类的特殊算法会产生任何好处。不要过早优化。
a,b(数据结构)的来源是什么?你的分析器说什么? -
“我有一种感觉……效率低下。”基于什么?你试过了吗?你有什么时间限制?你的整体算法是什么?
-
如果 p = 1000000007 是固定的,那么似乎可以通过手工编写一点汇编语言来提高速度。当然,这将取决于 CPU 指令集,python 标签阻止我详细说明作为答案。
标签: python math cryptography