数学建模社区-数学中国

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

作者: songls    时间: 2023-12-10 20:02
标题: 一个乘法逆元的计算方法
以下给出一个求乘法逆元的方法,主要是使用除数的积来求逆,供大家参考,如有不足,欢迎大家批评指正。
; f! o* T, d* N& d设 (a,n)=1  (ri,n)=1  (qi,n)=1  1≤i≤m
+ i$ I' N! k4 g$ k9 N4 W( v  a*r1≡q1 (mod n)
$ U9 v( a. z8 B% R( A0 e  q1*r2≡q2 (mod n)
  L0 Y- K7 Y/ S+ V  p/ |  q2*r3≡q3 (mod n)
/ I( ?& X" }7 d7 g   .5 `' W9 ]# k3 n+ X, ^
   .* N* {3 a" i, [' K! H& }
  .  Y. b, k2 X: @9 u" K1 g
  qm-1*rm≡qm (mod n)( {: z, |' A1 w3 [) Z! i& K0 ?& T
上述等式相乘,得:. ?/ U! I; f! d! F
  a*(r1*r2*...*rm-1)*(q1*q2*...*qm)≡r1*r2*...*rm-1*rm (mod n) =>! m6 v4 ^  l7 q# G6 [& t: g0 I
  a*(q1*q2*...*qm)≡rm (mod n) 9 }9 `+ J0 {+ G, `- }/ E! e
  如果对qi(1≤i≤m)进行如下的限定:) L3 }5 c, i$ X5 e' T
   a>|q1|>|q2|>...>|qi|>...>|qm-1|>|qm|
6 j# `& ~& e' }$ X/ {3 x   则 qm=±1
. O7 j& A/ L2 j# u/ a2 R  即 a与q1*q2*...*qm互逆8 A2 G* x3 [% o* o( L9 `8 H2 I. w) N
  例 求28在299的逆
- ?( t# Y- w+ a. U- @/ t     28*11≡9 (mod 299)
4 d: X& Y8 S* {' U7 c     9*33≡-2  (mod 299)
6 n( Z3 m0 C9 `( S     -2*-150≡1 (mod 299)- z+ x7 G6 R3 Z# I  q8 b! T
  逆为:    11*33*-150≡-32 (mod 299)1 u* V' x$ \  K/ d1 Y$ x
     28*-22≡-1 (mod 299)6 H) C7 o  F1 }4 _+ H& @
  但该方法有个最大的问题,当(qi,n)>1时,该方法将无法继续往下计算逆。1 B% r- ^" n6 Q1 E% C! {) B
下面给出其中一个算法:3 d9 t: T; g( i, _0 P( Z% l
  1    输入a,n  
3 n& h& [2 H' g9 ?$ {+ Z2 c3 y  2   resulte = 1   ; 保存逆的结果
7 X0 \* w4 Z; y9 {+ _" F  3   r=n/a+1      ; 保证 r*a>n+ l; k  `6 x& y3 d) l  R) c
  4  q=r*a-n       ; 得到余数,该余数小于a
" @; m) \2 t3 n+ v  5  resulte=(resulte*r)%n   
5 @* Y3 m! L$ O- B  6  if q=1  then  print(逆为: resulte) return  resulte6 G6 s) F8 R2 v; N
  7  if q=0 or q=a then  print(存在因子: a)  return a ;- P% j4 l$ h6 }/ `& O
  8  a=q/ n: S# {( w( `5 _" T! q
  9  goto 3# ]9 S/ [, h5 _; J% B

( ?5 J, N7 M( r1 T+ O& M

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

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






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