首页
社区
课程
招聘
[原创]质因数分解C版
发表于: 2009-7-3 19:22 7523

[原创]质因数分解C版

2009-7-3 19:22
7523

【原创】质因数分解C版
最大数支持4294967294也就是scanf("%lu")最大的数。
因为分解4294967294只需要
65535的质数表。所以速度很快。

理论上2.5×10^17的分解都可以在很短的时间内分出来。
2.5×10^17需要500000000的质数表。这里的算法我机器用了12.015 s

质数表部分算法参考了arab和erex的算法。并做了一些优化.
http://bbs.pediy.com/showthread.php?t=89497
但是只用到30因为30就可以节省3/4的空间用到2310 也就节省4/5.对速度影响较重。
arab的算法算500000000需要71s
没做空间优化的算法因为会用到虚拟内存速度影响很大。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (4)
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
修改一下。刚刚写错了.应该是空间压缩30倍.
2009-7-3 22:44
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
3
我写的那个程序只是为了对应梵听的程序, 生成一个可读的质数表而已.
但试除法需要的是质数表本身, 所以还不如直接分配一块内存来存放质数表呢.
按 2^16 * 2^16 = 2 ^ 32 来看, 要分解 2^32 内的任意数, 只需要存放 2^16 内的所有质数即可.
而按 2310 理论, 2 ^ 16 内最多只有 2 ^16 / 2310 * 480 = 13617 个质数, 每个质数占 4 个字节, 总共不过 54K 内存而已.
2009-7-7 23:40
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
4
建议看看 Miracl 库里的 factor, 里面有各种传统的质因数分解算法.
http://www.shamus.ie/
2009-7-7 23:45
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
5
分解RSA模数算法研究
Research on Algorithms for Factoring RSA Modulus
<<微机发展>>2005年 第15卷 第06期
作者: 褚一平, 陈勤,
期刊 ISSN : 1005-3751(2005)06-0091-02
RSA密码系统的安全性是基于大数分解困难问题.文中简要地介绍了目前攻击RSA密码系统的常用大数分解算法.详细阐述了大数分解法二次筛选法(Quadratic sieve,QS)以及它的改进算法MPQS和PPMPQS的理论基础.根据PPMPQS的原理,设计了一种快速寻找PP关系的方法以及分析了算法复杂度,并利用VC6实现了PPMPQS,成功分解了十进制70位的大数.
关键词: RSA, 大数分解算法, 二次筛选法, 多项式二次筛选法, 双大素数二次筛选法,

Source from http://scholar.ilib.cn/A-QCode~wjfz200506031.html
2009-7-8 02:01
0
游客
登录 | 注册 方可回帖
返回
//