- 在线时间
- 7 小时
- 最后登录
- 2024-8-19
- 注册时间
- 2023-11-2
- 听众数
- 3
- 收听数
- 0
- 能力
- 0 分
- 体力
- 58 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 23
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 12
- 主题
- 6
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   18.95% TA的每日心情 | 郁闷 2023-12-11 09:00 |
|---|
签到天数: 7 天 [LV.3]偶尔看看II
 |
以下给出一个求乘法逆元的方法,主要是使用除数的积来求逆,供大家参考,如有不足,欢迎大家批评指正。9 g2 V' m) `9 z9 q5 L! K# N
设 (a,n)=1 (ri,n)=1 (qi,n)=1 1≤i≤m
% d# ?7 u0 I' D2 |+ j$ j a*r1≡q1 (mod n)
8 n$ k4 v D- t9 ]7 ~ q1*r2≡q2 (mod n), [' `' p- O4 G2 y9 w- u; I# p
q2*r3≡q3 (mod n)& u; b2 D. q8 D2 y8 B
.8 S$ N4 T6 H, x; U' H4 c
.
# A2 a! {" X3 a- {6 F2 y .
- i3 A. Y6 N! K+ Z. j% O% V1 P$ x4 S qm-1*rm≡qm (mod n)' m9 R1 ]2 B4 L5 {
上述等式相乘,得:5 c) h7 K7 q% t9 ]+ M$ D7 I1 Y
a*(r1*r2*...*rm-1)*(q1*q2*...*qm)≡r1*r2*...*rm-1*rm (mod n) =>$ G* _! a3 v5 R6 F @4 u
a*(q1*q2*...*qm)≡rm (mod n) 2 g0 W2 q a) G* k7 a$ Y
如果对qi(1≤i≤m)进行如下的限定:. m+ l8 ]+ k" \7 z+ n; Y
a>|q1|>|q2|>...>|qi|>...>|qm-1|>|qm|
8 U* m; |; p6 i/ r- V8 e- y 则 qm=±11 t' X' `) x6 i5 @" ~( p+ O8 m# N
即 a与q1*q2*...*qm互逆
+ L$ x, L1 H) O2 G1 o0 S: t1 w 例 求28在299的逆8 ^7 n7 l3 k9 B
28*11≡9 (mod 299)% l) T4 W" r* Y1 n: x# W$ L* t
9*33≡-2 (mod 299)" {4 w4 k$ f- o
-2*-150≡1 (mod 299)
0 w* p& g1 I S' Y" z% V0 x0 l 逆为: 11*33*-150≡-32 (mod 299)
, f9 |( P# J3 ]' }( { b 28*-22≡-1 (mod 299)
: b8 s( I% G. _3 I 但该方法有个最大的问题,当(qi,n)>1时,该方法将无法继续往下计算逆。
$ n: X% O- k' i' G4 f$ [ 下面给出其中一个算法:
8 m' M: H" P: Q( j 1 输入a,n 9 v1 N! N' g# S8 _6 Z) A
2 resulte = 1 ; 保存逆的结果
; P, \ ^, }% I/ e% b7 W' N& ^# z 3 r=n/a+1 ; 保证 r*a>n
- \1 A, d; @! g 4 q=r*a-n ; 得到余数,该余数小于a
n. T( S2 R) W5 t4 Y" s 5 resulte=(resulte*r)%n / q; w; N& v& G, V' Z3 P9 M
6 if q=1 then print(逆为: resulte) return resulte
. Z0 J, l* @" ]: h/ R9 e! d% y, m5 w 7 if q=0 or q=a then print(存在因子: a) return a ;
& d. @! K- J* e" x) G& [; X2 t8 n 8 a=q* P; z2 M8 n' o# W
9 goto 3
$ x! q, `1 f# f6 N) T$ s( w# H3 M# f
|
zan
|