数学建模社区-数学中国

标题: 一个乘法逆元的计算方法 [打印本页]

作者: songls    时间: 2023-12-10 20:02
标题: 一个乘法逆元的计算方法
以下给出一个求乘法逆元的方法,主要是使用除数的积来求逆,供大家参考,如有不足,欢迎大家批评指正。
6 V  ?% f& X1 W' Q7 @, ^设 (a,n)=1  (ri,n)=1  (qi,n)=1  1≤i≤m
. k3 u9 R2 }) U: y) A( A  a*r1≡q1 (mod n)
+ p% U% M0 O% j$ c! P2 ~- g1 g: g  q1*r2≡q2 (mod n)
1 i$ p1 S0 F0 a  q2*r3≡q3 (mod n)  {# R, `( |+ O7 ^5 P5 j1 T
   .  D4 k" Q0 d8 x1 Y! N; V5 C0 j
   .
+ S3 R: X6 n# k% D  .
* m5 c* z+ ^% g$ X8 i7 x/ ~; Y! [  qm-1*rm≡qm (mod n)
' _& x4 @8 p2 V$ e1 _5 s1 a 上述等式相乘,得:
! V6 b7 A9 V4 u' {2 K( U9 G7 Q  a*(r1*r2*...*rm-1)*(q1*q2*...*qm)≡r1*r2*...*rm-1*rm (mod n) =>
( d& i8 E/ d, ^  a*(q1*q2*...*qm)≡rm (mod n) ! g3 d1 ~: }. l' A" b
  如果对qi(1≤i≤m)进行如下的限定:
7 w, p( ?3 u+ @   a>|q1|>|q2|>...>|qi|>...>|qm-1|>|qm|
8 K0 M/ G; O2 ?3 Y7 T  F   则 qm=±1% u, n' |! c6 I4 l& j6 a
  即 a与q1*q2*...*qm互逆4 T4 @8 `' y, [! ]( ~7 o
  例 求28在299的逆
& [% d& t( A9 O     28*11≡9 (mod 299)
. b7 `5 G+ V) H# j     9*33≡-2  (mod 299)
5 a2 w9 ^7 o: G7 ~; t4 {0 b) q' t     -2*-150≡1 (mod 299)
3 B" M9 r5 `5 ]# g  逆为:    11*33*-150≡-32 (mod 299)
6 l$ w( n( R! n6 K2 y9 E% C     28*-22≡-1 (mod 299)
( G9 F! G- d7 O  但该方法有个最大的问题,当(qi,n)>1时,该方法将无法继续往下计算逆。1 _+ v- |8 ~6 P( S' {0 s) a
下面给出其中一个算法:# z8 b! P) Z; t7 U2 D' `0 c' ]
  1    输入a,n  
( r5 ]* _- W! _; O# u  2   resulte = 1   ; 保存逆的结果 * S% n! i% @) M& ~: x
  3   r=n/a+1      ; 保证 r*a>n
* Z, C* \0 p( p: G9 J  4  q=r*a-n       ; 得到余数,该余数小于a" Q. X' Q3 Q" K5 g
  5  resulte=(resulte*r)%n   0 c; P: x  l1 t$ R& H; X0 ?% A
  6  if q=1  then  print(逆为: resulte) return  resulte
7 ?- \7 n: x  C  b  7  if q=0 or q=a then  print(存在因子: a)  return a ;
- {1 u0 Y& Z7 k% ^& m* f1 j  8  a=q
* f1 e- Y- P9 d6 y4 M3 t  9  goto 3! I3 F% C* l5 w" `
8 q" i4 R+ h& B8 D4 K

一个求乘法逆元的方法.pdf

39.85 KB, 下载次数: 0, 下载积分: 体力 -2 点






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5