实验五(模逆与模幂计算与应用)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//by ouhw int mod_invese百度文库int d, int n) //要求 n 为正整数 {
int a,b,q,r,u=0,v=1,t; a=n; b=(d>=0)?(d%n):-(d%n); while(b!=0) {
q=(int)a/b; r=a-b*q; a=b; b=r; t=v; v=u-q*v; u=t; } if(a!=1) return(-a); return((u<0)?u+n:u); } int mod_power(int a, int k, int n) //要求 n 为正整数
//采用从右向左算法,从左向右算法 //涉及的指数寻位不好用 C 实现 { int x,y,t; y=a; t=k; if(t<0) { y=mod_invese(y, n); if(y<0) return(0); t=-t; } x=1; if(t==0) return(1); while(t>1) { if(t&0x00000001) x=(x*y)%n; y=(y*y)%n; t>>=1; } x=(x*y)%n; return(x); }
相关文档
最新文档