数学建模社区-数学中国
标题:
一个乘法逆元的计算方法
[打印本页]
作者:
songls
时间:
2023-12-10 20:02
标题:
一个乘法逆元的计算方法
以下给出一个求乘法逆元的方法,主要是使用除数的积来求逆,供大家参考,如有不足,欢迎大家批评指正。
( }# w+ R' K' ^! S# q
设 (a,n)=1 (ri,n)=1 (qi,n)=1 1≤i≤m
/ v- `" a: p, H( c- j
a*r1≡q1 (mod n)
9 R t5 @2 b. q. f
q1*r2≡q2 (mod n)
9 ?; x* {$ a( }* Y
q2*r3≡q3 (mod n)
: g7 I$ _. A! r3 \+ z% ]
.
& |) k \$ o {- ]
.
% J3 S% D7 i8 N. o: O5 A0 N3 q
.
9 |8 N2 _8 h# O, N+ Q$ }, ` F# p! r
qm-1*rm≡qm (mod n)
: Y2 J+ X/ T7 @
上述等式相乘,得:
" K1 _. j7 D' e- _0 K" N6 U
a*(r1*r2*...*rm-1)*(q1*q2*...*qm)≡r1*r2*...*rm-1*rm (mod n) =>
: h& `) x5 E' i: Q6 S8 Q
a*(q1*q2*...*qm)≡rm (mod n)
3 z9 k3 }5 d/ U8 g- y4 ?
如果对qi(1≤i≤m)进行如下的限定:
6 P8 z4 @, u( I; ~) k# [( R
a>|q1|>|q2|>...>|qi|>...>|qm-1|>|qm|
- r: H$ v/ v" M( Q* v& l0 j( S
则 qm=±1
( w2 x# V2 }0 Z h, t
即 a与q1*q2*...*qm互逆
% ~5 C; n7 d+ H3 R
例 求28在299的逆
; b3 z) @/ u, W# q+ F7 V; p& }7 ]3 O3 }3 z
28*11≡9 (mod 299)
, q5 K2 R( [* U+ n! o5 y0 N
9*33≡-2 (mod 299)
7 g c% J% P7 j
-2*-150≡1 (mod 299)
3 _3 O/ f. F- _- t! ]. b
逆为: 11*33*-150≡-32 (mod 299)
0 ^8 Y. a k4 s
28*-22≡-1 (mod 299)
" u! {3 v! w/ z( J. @0 `1 K1 _
但该方法有个最大的问题,当(qi,n)>1时,该方法将无法继续往下计算逆。
6 A( i P5 N6 _5 e) a
下面给出其中一个算法:
, U5 p# B6 d7 K x0 B: o
1 输入a,n
1 M% l6 E8 O/ g9 X; Q+ v
2 resulte = 1 ; 保存逆的结果
! o2 x& M8 C$ G0 U3 D
3 r=n/a+1 ; 保证 r*a>n
: i0 U& W8 q1 W
4 q=r*a-n ; 得到余数,该余数小于a
+ {- X/ V! v) N# G9 Y4 I
5 resulte=(resulte*r)%n
8 l7 r; z+ l4 a( [
6 if q=1 then print(逆为: resulte) return resulte
- M3 K3 e% a4 W, F+ `
7 if q=0 or q=a then print(存在因子: a) return a ;
; }! S7 O+ u6 {, F% [5 K7 G
8 a=q
6 g- E% K# v" Y2 {' c. z2 ^+ [5 ]
9 goto 3
1 H+ [6 U/ X) k: \0 v
1 x& }# v& P2 }' ?8 @
一个求乘法逆元的方法.pdf
2023-12-10 20:01 上传
点击文件名下载附件
下载积分: 体力 -2 点
39.85 KB, 下载次数: 0, 下载积分: 体力 -2 点
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5