【问题标题】:division of very large integers in Python using SageMath使用 SageMath 在 Python 中对非常大的整数进行除法
【发布时间】:2019-10-31 11:36:32
【问题描述】:

我正在使用 Python 和 SageMath 实现维纳指数攻击。

我的代码如下

from sage.all import *
# constants
b = some_very_large_number
n = some_very_large_number
b_over_n = continued_fraction(b/n)

while True:
    t_over_a = b_over_n.convergent(i+1)
    t = t_over_a.numerator()
    a = t_over_a.denominator()
    # check if t divides ab-1
    if ((t != 0) and (gcd(a*b-1, t)== t)):
        print("Found i: ", i)
        break
    i += 1

我发现循环不会永远结束,并在while循环之前添加了这行代码。

print(b_over_n.convergent(5))

我发现b_over_n 无论如何总是返回 0。 我还打印出type(b_over_n) 并检查它是'long' 类型。

我查看了 SageMath 手册,但还没有发现任何有用的东西。

我在这里做错了吗?

【问题讨论】:

    标签: python math


    【解决方案1】:

    原来我使用的是 Python2,int/int 将返回 int。 因此,在我的例子中,由于b 小于nb/n 自动返回0

    【讨论】:

      猜你喜欢
      • 2020-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-29
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      相关资源
      最近更新 更多