用于分解30个十进制数字的算法

拉吉夫

我的教授给了我一个RSA因数分配问题。给定的模数为30个十进制数字长。我一直在搜索很多关于分解算法的文章。但是,为我给定的要求选择一个一直很头疼。哪些算法对30个十进制数字的性能更好?

注意:到目前为止,我已经阅读了有关蛮力法和二次筛的信息。后者很复杂,前者很费时。

r3mainer

还有另一种称为Pollard的Rho算法的方法,它不如GNFS快,但能够在数分钟而不是数小时内分解30位数字。

该算法非常简单。当发现任何因数时它将停止,因此您需要递归调用它以获得完整的因式分解。这是Python的基本实现:

def rho(n):
    def gcd(a, b):
        while b > 0:
            a, b = b, a%b
        return a
    g = lambda z: (z**2 + 1) % n
    x, y, d = 2, 2, 1
    while d == 1:
        x = g(x)
        y = g(g(y))
        d = gcd(abs(x-y), n)
    if d == n:
        print("Can't factor this, sorry.")
        print("Try a different polynomial for g(), maybe?")
    else:
        print("%d = %d * %d" % (n, d, n // d))

rho(441693463910910230162813378557) # = 763728550191017 * 578338290221621

或者,您可以只使用现有的软件库。重新发明这个特殊的轮子我看不出什么意义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自动舍入得到2个十进制数字

来自分类Dev

十进制数字逗号样式

来自分类Dev

Java舍入十进制数字

来自分类Dev

Android TextWatcher十进制数字

来自分类Dev

jQuery:动画十进制数字

来自分类Dev

设置十进制数字格式

来自分类Dev

JavaScript舍入十进制数字

来自分类Dev

将十进制数字字符串转换为BCD的算法

来自分类Dev

C找不到sqrt {2}的第十个十进制数字

来自分类Dev

使用带有2个尾随数字的十进制数字进行迁移

来自分类Dev

PHP:将数字四舍五入为16个十进制数字

来自分类Dev

如何在C ++中打印最多6个十进制数字的数字?

来自分类Dev

PHP:将数字四舍五入为16个十进制数字

来自分类Dev

将具有 1 个十进制数字的双数转换为 2 个数字

来自分类Dev

将任何十进制数字四舍五入到下一个十进制数字

来自分类Dev

正则表达式十进制数字,其中第三个十进制数字为0或5

来自分类Dev

用于验证十进制数字的正则表达式

来自分类Dev

用于在iOS中检查整数或十进制数字的正则表达式

来自分类Dev

正则表达式用于验证固定范围的十进制数字

来自分类Dev

用于C#中十进制数字验证的正则表达式

来自分类Dev

将两个十进制数字相加Hive SQL

来自分类Dev

如何打印显示4个十进制数字的整数?

来自分类Dev

将十进制数字转换为多余的127个表示形式

来自分类Dev

检查字符串中的两个十进制数字

来自分类Dev

Java获得双精度数的前2个十进制数字

来自分类Dev

获取第一个不为0的十进制数字的位置

来自分类Dev

在汇编中明确输入一个十进制数字

来自分类Dev

使用python将十六进制十进制数字转换为十进制

来自分类Dev

难以删除十进制数字中的零值?

Related 相关文章

热门标签

归档