java写的三个求乘法逆元的算法:

第一个是著名的扩展欧拉算法

第二个是网上发现的一个牛人写的算法

第三个是我这个菜鸟补充的一个最垃圾的算法

在对较小的数进行运算的时候,后两种算法都比第一个快,第三个比其他两个都快。

在对较大的数进行运算的时候,第一种算法最快,第三种算法求得的结果由于java里int位数关系导致结果出错。

public int extendEuclid(int e, int modValue){

int D = 0;

int x1, x2, x3, y1, y2, y3, t1, t2, t3;

x1 = y2 = 1;

x2 = y1= 0;

x3 = e;

y3 = modValue;

int q = 0;

while(true){

if(y3 == 1){

D = y2;

break;

}

if(y3 == 0){

D = y2;

break;

}

q = x3 / y3;

t1 = x1 - q*y1;

t2 = x2 - q*y2;

t3 = x3 - q*y3;

x1 = y1;

x2 = y2;

x3 = y3;

y1 = t1;

y2 = t2;

y3 = t3;

}

return D<0?e+D:D;

}

public int extendedEuclid(int e, int modValue){

int i;

int over= e;

for(i=1; i

{

over= over % modValue;

if( over==1 )

{

return i;

}

else

{

if(over+e<= modValue)

{

do

{

i++;

over += e;

}

while( over+e <= modValue );

}

else

{

i++;

over +=e;

}

}

}

return 0;

}

public void myEuclid(int e, int modValue){

int x = e;

int num = e;

int d = 1;

while((num % modValue ) != 1){

d++;

num += e;

}

System.out.println(d);

}

乘法逆元 java_java写的三个求乘法逆元的算法相关推荐

  1. 三点求平面方程式的算法

    // 点 // //     P1(X1,Y1,Z1), P2(X2,Y2,Z2), P3(X3,Y3,Z3) // // 设法向量为n // //     P2-P1  [(X2-X1),(Y2-Y ...

  2. 求乘法逆元的几种方法

    (数学渣,下面的文字可能有误,欢迎指教) 乘法逆元的定义貌似是基于群给出的,比较简单地理解,可以说是倒数的概念的推广.记a的关于模p的逆元为a^-1,则a^-1满足aa^-1≡ 1(mod p) 加减 ...

  3. 计蒜客 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B coin(求乘法逆元)

    Bob has a not even coin, every time he tosses the coin, the probability that the coin's front face u ...

  4. java求乘法逆元的代码_求乘法逆元的几种方法

    (数学渣,下面的文字可能有误,欢迎指教) 乘法逆元的定义貌似是基于群给出的,比较简单地理解,可以说是倒数的概念的推广.记a的关于模p的逆元为a^-1,则a^-1满足aa^-1≡ 1(mod p) 加减 ...

  5. 表格法轻松理解扩展欧几里得算法以及利用其求乘法逆元

    文章目录 扩展欧几里得算法 求乘法逆元 扩展欧几里得算法 具体算法的原理参见扩展欧几里得算法求乘法逆元,本文仅以表格的形式展现计算过程,浅显易懂.下面通过例子进行说明. 例:求1234和4321的最大 ...

  6. 求乘法逆元c语言版,C语言实现求乘法逆元

    如果ax≡1 (mod p),且gcd(a,p)=1(a与p互质),则称a关于模p的乘法逆元为x. 1.头文件 #include #include #include 2.求需要存储的空间 int mo ...

  7. 夜深人静写算法(三十四)- 逆元

    文章目录 一.前言 二.逆元的概念 1.单位元 2.逆元 3.模乘的单位元 4.模乘的逆元 三.逆元的求解 1.扩展欧几里德定理 2.费马小定理 3.线性递推 四.逆元的应用 1.前缀积差分 2.逆元 ...

  8. java乘法逆元与除法取模,关于数论乘法逆元及相关知识点

    在求解a/b%m时,可以转化为(a%(b*m))/b,转化过程如下 令k = (a/b)/m(向下取整), x = (a/b)%m; a/b = k*m + x (x < m); a = k*b ...

  9. 扩展Euclidean算法求乘法逆原理详解与算法实现

    [利用扩展Euclidean算法求乘法逆] 1. Equipment (1) operating system version :WIN 10 (2) CPU instruction set: x 6 ...

最新文章

  1. 李宏毅机器学习笔记(二)-------Why we need learn Machine Learning?
  2. 《水晶报表自动补空行,补格线思路》 【转】
  3. DISTINCT删除重复数据
  4. Leet Code OJ 107. Binary Tree Level Order Traversal II [Difficulty: Easy]
  5. 面试了 N 个候选人后,我总结出这份 Java 面试准备技巧
  6. gRPC Web使用指南
  7. 计算机网络 --- 网络层IP数据报
  8. mac如何使用「磁盘工具」创建dmg 映像文件
  9. Atitit 三种并发编程模型 艾龙 attilax总结 1. 并发系统可以使用不同的并发模型去实现。 1 2. 并行工作者 并行工作者模型。进来的任务分配给不同的工作者 银行模式 2 2.1.
  10. js之数组去重的方法
  11. 《室内设计软件Sketch Up零初级入门视频教程》
  12. SVD专题1 算子的奇异值分解——矩阵形式的推导
  13. win7黑苹果双系统隐藏Clover多余启动项
  14. PS怎样把低像素图片变成高像素图片
  15. linux lp命令,Linux lp 命令 command not found lp 命令详解 lp 命令未找到 lp 命令安装 - CommandNotFound ⚡️ 坑否...
  16. VM 将宿主机文件夹 映射至 虚拟机以及vm tools【共享文件夹、复制粘贴、拖动上传下载】
  17. Vue axios请求自带域名,接口及项目名
  18. DocuFreezer(批量文件格式转换器)官方正式版V3.1.2012.18200 | 文件格式转换器哪个好用
  19. 独立看门狗(IWDG)
  20. Ajax,Axios,Fetch的学习,对比和使用

热门文章

  1. js中 ‘ ‘==0 为什么等于true?
  2. Unity小游戏——3D坦克大战
  3. matlab 仿射变换函数,matlab 中的仿射变换函数
  4. 梯度下降算法原理 神经网络(Gradient Descent)
  5. 【html】【一个简单的用户登录页面代码】
  6. 「Linux-基础」CentOS8 权限管理
  7. ARM简单程序设计【嵌入式系统】
  8. 西电-机器学习-逻辑回归
  9. Cg学习记录003 之Varying参数
  10. 程序实现泊松随机分布