找回密码
 欢迎注册
楼主: 福娃PNP

[讨论] 素性检测与整数分解

[复制链接]
发表于 2008-5-21 20:31:10 | 显示全部楼层


能对一些小数字做下示例么?
比如分解3*7*257*9973
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-5-22 21:13:21 | 显示全部楼层

回复 51# 无心人 的帖子

你提出的问题,我目前不具备条件,你可以自己编程,我是在http://wims.math.leidenuniv.nl/w ... ession=690DAB90D1.1这个网站算的,连分数只能算到五百个,如果用你给的数字,无法算出渐进分数,很抱歉,不过你可以在函数计算值这个选项里计算一下你给我的连分数时间复杂度,及GNFS的复杂度,作个比较!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-5-23 09:24:03 | 显示全部楼层
40#已经给出计算连分数的近似时间复杂度,从中我们看出时间复杂度要大于$O(sqrt(n))$,也就是说,如果采用这种方法,比试除法还要慢,当然更加不用同其他先进的方法去比较了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-5-23 15:16:06 | 显示全部楼层

我晕了
我给的数字,如果你不能计算出连分数
那证明你还不具备开解这个问题的能力

计算$N$的根式的连分数只需要精度为$1/N$的浮点精度就可以了
具体到我说的那个数字。双精度double足够计算出所有循环节
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-29 09:26:44 | 显示全部楼层

就目前来看 ,并不是一个分解大合数的有效办法

楼主的问题其实质是解二次同余式 x^2=1   ( mod  b ), 但当b是一个合数是,并没有好的方法,希望楼主另辟溪径
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-29 13:44:14 | 显示全部楼层
原帖由 无心人 于 2008-5-21 20:31 发表


能对一些小数字做下示例么?
比如分解3*7*257*9973

这个数连分数到没有多大,循环部分长度2562。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-29 14:27:04 | 显示全部楼层
原帖由 福娃PNP 于 2008-5-22 21:13 发表
你提出的问题,我目前不具备条件,你可以自己编程,我是在http://wims.math.leidenuniv.nl/wims/wims.cgi?lang=cn&+session=690DAB90D1.1这个网站算的,连分数只能算到五百个,如果用你给的数字,无法算出渐进分数,很抱 ...

我帮你写了个连分数计算的程序,可以算19位以内的连分数比如算根号987654321987654123的连分数,长度有8千多万位,生成的结果有168M多(耗时27s)
算根号123456789123456789连分数有300多万位(耗时小于1s),
很难想象你可以用这些数据进行整数分解。。。
不过还是希望我的程序对你有帮助
花了我不少时间,收一个金币是应该的哈。

连分数计算小程序(winxos).rar

45.65 KB, 阅读权限: 3, 下载次数: 5, 下载积分: 金币 -1 枚, 经验 1 点, 下载 1 次

售价: 1 枚金币  [记录]

连分数计算

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-30 21:10:33 | 显示全部楼层

请winxox看如下公式

在$sqrt(D)$的连分式分解过程中,用到如下公式
$P_1=0,Q_1=1,a_1=[sqrt(D)]$
$P_2=a_1,Q_2=D-a_1^2$
$P_n= a_(n-1)Q_(n-1)-P_(n-1), $  (1)
$Q_n=(D-P_n^2)/Q_(n-1)$           (2)

$a_n=[(a_1+P_n) /Q_n]$                (3)
其实(2)式不必算$P_n $的平方,便可以得到 $Q_n$的值,
有  $Q_n=Q_(n-2)+a_(n-1)(P_(n-1)-P_n)$
其推导过程如下
  将(2)式中的 $P_n$用(1)式替换
有 ,$Q_n =(D-(a_(n-1)Q_(n-1)-P_(n-1))^2)/Q_(n-1)$
                   $ =[D-(a_(n-1)^2Q_(n-1)^2+2a_(n-1)Q_(n-1)P_(n-1)-P_(n-1))^2]/Q_(n-1)$
                   $=Q_(n-2)+a_(n-1)[-a_(n-1)Q_(n-1)+2P_(n-1)]$   再利用
    $ -a_(n-1)Q_(n-1)=-P_n-P_(n-1) $ 代入得
      $Q_n=Q_(n-2)+a_(n-1)(P_(n-1)-P_n)$,这就是为什么  (2)式,分子能被整除 恒得整数的原因
我想以上方法可以提高计算sqrt(n)连分式的速度
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-5-1 07:44:29 | 显示全部楼层
原帖由 wsc810 于 2009-4-30 21:10 发表
在sqrt(D)的连分式分解过程中,用到如下公式
P_1=0,Q_1=1,a_1=[sqrt(D)]
P_2=a_1,Q_2=D-a_1^2
P_n= a_(n-1)Q_(n-1)-P_(n-1),   (1)
Q_n=(D-P_n^2)/Q_(n-1)  (2)

a_n=[(a_1+P_n) /Q_n]                (3)
其 ...

直接用的以前写的算法,现在我都不记得了。。。
谢谢wsc810,有时间的话我用你的方法写写对比一下。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-24 08:13 , Processed in 0.139800 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表