【发布时间】:2014-01-17 08:10:25
【问题描述】:
到目前为止,这是我的代码:
def mod_div(a, b, n):
if gcd(b,n) != 1:
return 'Undefined'
for x in range(1, n):
if b*x%n == a%n:
return x
这段代码采用我创建的函数 gcd() 并返回 gcd,然后我用它来计算逆。我搜索了这些问题,但似乎没有一个给我正确的答案。
我的问题是:当我执行 div_mod(3,2,7) 时,代码返回 5,这是它应该的。但是,当我对较大的数字(例如 n > 10000)执行此操作时,由于要通过 n 迭代才能找到正确的数字,因此计算解需要很长时间。
我尝试查看其他问题,在他们的答案中,他们都有相似的东西,但是如果 gcd != 1,他们都返回 x%n,而不是 for i in n。 这对我没有帮助,也没有给出正确的答案。
例如。如果我使用 a=12, b = 3 和 n= 11 它应该返回 4,但是我发现的所有函数除了我的都返回 1。
我想知道是否有一种更有效的方法来使用 eulids 扩展定理,而不是测试每个 n,并希望一个有效。
【问题讨论】:
标签: python algorithm python-3.x theory