找回密码
 欢迎注册
查看: 9589|回复: 4

[原创] 求大整数模逆算法 !

[复制链接]
发表于 2010-4-23 22:15:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
求大整数模逆算法 !我查了相关资料说欧几里得算法的扩展!但是具体我研究了很久都一头雾水!希望那个高手给个求大整数模逆算法 参考参考!谢谢啊
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-4-25 02:50:31 | 显示全部楼层
欧几里得
跟连分数,渐近分数相关.

如果数不太大的话
似乎
M M' = 1 mod N;  (N,M) = 1;
M' =  M^(N - 2) 似乎也能勉强能用用.
只是不知道高手用的是什么方法.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-4-25 12:37:18 | 显示全部楼层
2# knate
谢谢!试下
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-4-26 07:39:44 | 显示全部楼层
模逆算法一般是通过扩展欧几里得算法得到,效率也比较高。
至于2#说M' =  M^(N - 2) ,这需要已知M为素数时才能确保成立。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-4-26 09:35:04 | 显示全部楼层
我来解释一下这个问题吧,呵呵。
楼主要求x^(-1)=a mod(n),已知n和a,求x。这里有一个小的假设藏在里面,就是a和n是互质的,如果不互质,那么问题的答案是“无”。
在互质有解的时候,问题等价于:求ax=1 mod(n);又等价于求ax=kn+1,也可以写做求ax+nt=1的整数解,其中已知a和n,求x和t。(当然求出t后,我们无视它就可以了。)
我们假设n=am+b,也就是说m是n/a的商,b是n/a的余数,这时问题变成了ax+(am+b)t=1,即求a(x+mt)+bt=1的整数解,其中已知a和b,求x+mt和t。求出x+mt和t后,因为m已知,然后还是可以求出x和t的。可以看到,如果把x+mt和t看作新的变量,问题就恢复成原先的问题了,只是其中的两个已知量比原先小了。
这样反反复复,如果a和n是互质的,总有一天两个已知量会有一个变成1的,这时就可以直接求解了。
两个已知量缩小的速度是很快的,所以算法是高效的。如果a和n不互质,算法也会给出公因数,从而提示的。
总结一下:在这种“扩展的辗转相除法”中,上面的“m是n/a的商,b是n/a的余数”是“相除”,“问题就恢复成原先的问题了”和“这样反反复复”是“辗转”,“求出x+mt和t后,因为m已知,然后还是可以求出x和t的。”是“扩展的”。所以总的过程就是先辗转相除,然后再往回捣腾。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-5-12 10:22 , Processed in 0.046049 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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