模为2的逆元是什么_两种求模m逆元的方法

在a|b(a能整除b)的前提下,计算(b/a)mod m的时候转化为 计算(b*x)mod m ; 这时的x就是a的逆元(a模m的逆元);

此时x满足e22c50690caf0d973ffa9b5393e824b5.png  (a*x mod m == 1);

这个x的求法有一下两种:

1)扩展欧几里得算法求解 a*x+m*y=1;  因为 a*x mod m == 1   <=>  a*x=1+m1*y   <=>  a*x+m*y==1 ( m=-m1 )。

LL ExGcd(LL a,LL b,LL &x,LL &y){

if(!b)

{

x=1;

y=0;

return a;

}

LL ans=ExGcd(b,a%b,x,y);

LL temp=x;

x=y;

y=temp-a/b*y;

return ans;

}

LL getInverse(LL a,LL p)//a模n的乘法逆元

{

if(__gcd(a,p)!=1)

return -1;

LL x,y;

ExGcd(a,p,x,y);

return (x+p)%p;

}

2)如果有gcd(a,m)==1 ,即a,m互质,则a^(m-1) mod m==1 (这个定理在此不证明,有兴趣去搜)  ;  所以  [ a^(m-2) ] mod m 等价于 a^(-1) ;

此时a的逆元就是a^(-1)=x = [ a^(m-2) ] mod m 。

LL qpowMod(LL m,LL n,LL p)

{

LL ans=1;

LL temp=m;

while(n>0)

{

if(n&1)

ans=ans*temp % p;

temp=temp*temp % p;

n>>=1;

}

return ans;

}

LL _getInverse(LL a,LL p)

{

return qpowMod(a,p-2,p);

}

此外 当a,m不是互质数,计算(b/a)mod m,没办法把b/a转换成b×(a的逆元),可以用  (b/a)mod m == [ b mod (a*m) ] / a 来代替。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java值栈_Struts2 中的值栈是什么?

7.1值栈7.1.1值栈是什么简单的说&#xff1a;值栈是对应每一个请求对象的轻量级的内存数据中心。Struts2中一个很激动人心的特性就是引入了值栈&#xff0c;在这里统一管理着数据&#xff0c;供Action、Result、Interceptor等Struts2的其他部分使用&#xff0c;这样一来&#x…

java try的用法_Java中try、catch的使用方法

Java中有两种处理异常的方式&#xff0c;分别是用throws抛出异常、用try、catch捕获异常。try-catch在Javatry-catch语句的语法格式&#xff1a;try{//代码块}catch(Exception1 e){//抛出异常后所要进行的操作}当try语句当中捕获到异常时&#xff0c;会将异常抛出到catch语句中…

java android上传文件_Java-Android-如何将txt文件上传到网站?

我想将txt文件上传到网站,我承认我没有对其进行任何详细的研究,但是我看了一些示例,并希望就我是否朝着正确的方向提出更多的经验性意见. .这是我到目前为止的内容&#xff1a;DefaultHttpClient httpClient new DefaultHttpClient();HttpContext localContext new BasicHttp…

java授查 非授查异常_java检查异常与非检查异常

Java的可检测异常和非检测异常泾渭分明。可检测异常经编译器验证&#xff0c;对于声明抛出异常的任何方法&#xff0c;编译器将强制执行处理或声明规则。非检测异常不遵循处理或声明规则。在产生此类异常时&#xff0c;不一定非要采取任何适当操作&#xff0c;编译器不会检查是…

java not a jpeg file_javax.imageio.IIOException: Not a JPEG file: starts with 0x47 0x49

java处理图片时出现异常javax.imageio.IIOException: Not a JPEG file: starts with 0x47 0x49at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImageHeader(Native Method)at com.sun.imageio.plugins.jpeg.JPEGImageReader.readNativeHeader(Unknown Source)at com.sun…

java if用法_java中if语句的写法

if语句if 语句的语法如下&#xff1a;if(布尔表达式){//如果布尔表达式为true将执行的语句}如果布尔表达式的值为 true&#xff0c;则执行 if 语句中的代码块&#xff0c;否则执行 if 语句块后面的代码。免费视频教程推荐&#xff1a;java视频教程if...else语句if 语句后面可以…

java子类和父类实例_java中父类与子类之间的转换示例

java中父类与子类之间的转换示例有以下三点&#xff1a;示例一父类强制转子类pre class"brush:php;toolbar:false">Father f new Son();Son s (Son)f;//可以创建一个父类的实例&#xff0c;想要强制把父类对象转换成子类的&#xff0c;不行&#xff01;通俗的想…

java 二进制 定义_在Java中,我可以用二进制格式定义一个整数常量吗?

所以&#xff0c;随着Java SE 7的发布&#xff0c;二进制符号标准开箱即用。语法是非常直接和明显的&#xff0c;如果你有一个良好的理解二进制&#xff1a;byte fourTimesThree 0b1100;byte data 0b0000110011;short number 0b111111111111111;int overflow 0b10101010101…

java 原子类能做什么_死磕 java原子类之终结篇(面试题)

概览原子操作是指不会被线程调度机制打断的操作&#xff0c;这种操作一旦开始&#xff0c;就一直运行到结束&#xff0c;中间不会有任何线程上下文切换。原子操作可以是一个步骤&#xff0c;也可以是多个操作步骤&#xff0c;但是其顺序不可以被打乱&#xff0c;也不可以被切割…

java二重循环计数_java的二重循环代码样例

1.计算三个班的平均分import java.util.Scanner;public class AvgScore{public static void main (Sting[] args){int[] score new int[]; //成绩数组int classNum 3; //班级数量double sun 0.0; //成绩总和double[] average new double[classNum];//平均成绩…

java语言sql接口_Java语言SQL接口

Java语言SQL接口编辑锁定讨论上传视频《Java语言SQL接口》是1997年清华大学出版社出版的图书&#xff0c;作者是孙元等。本书覆盖了JDBC的各个方面&#xff0c;适合于有一定的Java语言编程基础和数据库及SQL语言基础的开发人员使用。作 者孙元 / …

java对docker_如何在docker中运行java程序

吃鸡游戏创建一个redis docker容器首先&#xff0c;我们先为redis创建一个DockerfileFROM ubuntu:12.10RUN apt-get updateRUN apt-get -y install redis-serverEXPOSE 6379ENTRYPOINT ["/usr/bin/redis-server"]现在你需要通过Dockerfile创建一个镜像&#xff0c;将…

java 文件树形_java 显示树形文件结构,类似windows的tree命令

本来是个练习题&#xff0c;自己做了做&#xff0c;还行。但是看到别人的代码比我的更好。所以&#xff0c;这里就贴出了别人的代码。我的就只有让它沉睡吧……。是别人的&#xff0c;算是转载吧。转自&#xff1a;他的电脑。主要思想&#xff0c;递归调用。import java.io.Fil…

hdfs的实验总结_实验2-熟悉常用的HDFS操作.doc

本文档下载自 文库下载网&#xff0c;/doc/d52aebffbb0d4a7302768e9951e79b896802689c.html实验2-熟悉常用的HDFS操作实验2熟悉常用的HDFS操作1实验目的1. 理解HDFS在Hadoop体系结构中的角色&#xff1b;2. 熟练使用HDFS操作常用的Shell命令&#xff1b;3. 熟悉HDFS操作常用的J…

java canvas 画图片_canvas画布——画八卦图

浏览器支持Internet Explorer 9、Firefox、Opera、Chrome 以及 Safari 支持 arc() 方法。注释&#xff1a;Internet Explorer 8 或更早的浏览器不支持 元素。定义和用法arc() 方法创建弧/曲线(用于创建圆或部分圆)。提示&#xff1a;如需通过 arc() 来创建圆&#xff0c;请把起…

计算两个数的乘积java编写_Java模拟计算机的整数乘积计算功能示例

本文实例讲述了Java模拟计算机的整数乘积计算功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;计算机计算整数乘积的原理&#xff1a;实现代码&#xff1a;package math;public class two {/*** Fundamental method* f(n) O(n^2)* param a* param b* return*/publ…

java使用linux常用命令_linux常用Java程序员使用命令(一)

pwd 显示当前路径cd切换目录 . .. ~ls显示文件(夹)-l 显示详细信息-a显示全部&#xff0c;包括隐藏文件(夹)mkdir创建文件夹-p递归创建touch创建空白文件echocat、tac、more、tail 查看文本内容rmdir删除空白文件夹rm-f 强制删除-r递归删除cp复制/新建文件mv移动/重命名find查找…

java中start与loop_java for-loop问题

我正在制作一个Java程序来计算Simpson的积分规则.这是我的代码.注意count 4,9,10,11的输出值中的第二列数字.它们不是我需要的数字,它们不遵循这种模式.我需要这些数字是准确的.发生了什么,我该如何解决&#xff1f;public static void main(String[] args){double totalS 0.…

java查询数据库的方式_Java连接各种数据库方式速查表

1、Oracle8/8i/9i数据库(thin模式)Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();String url"jdbc:oracle:thin:localhost:1521:orcl"; //orcl为数据库的SIDString user"test";String password"test";Connection c…

java多线程编程—高级主题_Java day20 高级编程【第一章】Java多线程编程

【第一章】Java多线程编程一.进程与线程多个时间段会有多个程序依次执行&#xff0c;但是同一时间点只有一个进程执行线程是在进程基础之上划分的更小的程序单元 &#xff0c;线程是在进程基础上创建并且使用的&#xff0c;所以线程依赖于进程的支持&#xff0c;但是来讲&#…