如何求逆元例题
在数论中,逆元是指对于一个整数a和模数m,如果存在一个整数b,满足ab ≡ 1 (mod m),那么b就是a在模数m下的逆元。求逆元在密码学和算法设计中有着重要的应用。
下面以一个例题来说明如何求逆元:
假设我们要求7在模数11下的逆元,也就是要找到一个整数b,满足7b ≡ 1 (mod 11)。
解题步骤如下:
- 扩展欧几里得算法求解
我们可以使用扩展欧几里得算法求解上述方程的解,具体步骤如下:
a. 找到7和11的最大公约数,即gcd(7, 11) = 1;
b. 使用扩展欧几里得算法求得x和y的值,使得7x + 11y = gcd(7, 11) = 1;
c. 如果存在x,那么x就是7在模数11下的逆元,因为7x ≡ 1 (mod 11)。
根据上述步骤,我们可以求解出7在模数11下的逆元为8。
- 费马小定理求解
费马小定理告诉我们:如果p是质数,那么对于任何整数a,都有a^(p-1) ≡ 1 (mod p)。因此,如果我们要求a在模数p下的逆元,我们可以使用费马小定理将其转化为求a^(p-2)在模数p下的逆元。
对于上面的例题,我们可以使用费马小定理将求7在模数11下的逆元转化为求7^9在模数11下的逆元。具体步骤如下:
a. 计算7^9 mod 11的值,得到6;
b. 根据费马小定理,7^(11-2) ≡ 7^9 ≡ 6^-1 (mod 11);
c. 因此,6的逆元即为7在模数11下的逆元,即8。
以上就是求解逆元的两种常用方法。根据实际情况选择不同的方法,可以更加高效地解决问题。
上一篇: 51Nod-1256-倒数元素乘法
下一篇: 逆元唯一吗
推荐阅读
-
子网划分简介及如何划分子网(例题讲解)
-
正负偏差变量 即 d2+、d2- 分别表示决策值中超出和未达到目标值的部分。而 di+、di- 均大于 0 刚性约束和目标约束(柔性目标约束有偏差) 在多目标规划中,>=/<= 在刚性约束中保持不变。当需要将约束条件转换为柔性约束条件时,需要将 >=/<= 更改为 =(因为已经有 d2+、d2- 用来表示正负偏差),并附加上 (+dii-di+) 注意这里是 +di、-di+!之所以是 +di,-di+,是因为需要将目标还原为最接近的原始刚性约束条件 优先级因素和权重因素 对多个目标进行优先排序和优先排序 目标规划的目标函数 是所有偏差变量的加权和。值得注意的是,这个加权和都取最小值。而 di+ 和 dii- 并不一定要出现在每个不同的需求层次中。具体分析需要具体问题具体分析 下面是一个例子: 题目中说设备 B 既要求充分利用,又要求尽可能不加班,那么列出的时间计量表达式即为:min z = P3 (d3- + d3 +) 使用 + 而不是 -d3 + 的原因是:正负偏差不可能同时存在,必须有 di+di=0 (因为判定值不可能同时大于目标值和小于目标值),而前面是 min,所以只要取 + 并让 di+ 和 dii- 都为正值即可。因此,得出以下规则: 最后,给出示例和相应的解法: 问题:某企业生产 A 和 B 两种产品,需要使用 A、B、C 三种设备。下表显示了与工时和设备使用限制有关的产品利润率。问该企业应如何组织生产以实现下列目标? (1) 力争利润目标不低于 1 500 美元; (2) 考虑到市场需求,A、B 两种产品的生产比例应尽量保持在 1:2; (3)设备 A 是贵重设备,严禁超时使用; (4)设备 C 可以适当加班,但要控制;设备 B 要求充分利用,但尽量不加班。 从重要性来看,设备 B 的重要性是设备 C 的三倍。 建立相应的目标规划模型并求解。 解:设企业生产 A、B 两种产品的件数分别为 x1、x2,并建立相应的目标计划模型: 以下为顺序求解法,利用 LINGO 求解: 1 级目标: 模型。 设置。 variable/1..2/:x;! s_con_num/1...4/:g,dplus,dminus;!所需软约束数量(g=dplus=dminus 数量)及相关参数; s_con(s_con_num);! s_con(s_con_num,variable):c;!软约束系数; 结束集 数据。 g=1500 0 16 15. c=200 300 2 -1 4 0 0 5; 结束数据 min=dminus(1);!第一个目标函数;!对应于 min=z 的第一小部分;! 2*x(1)+2*x(2)<12;!硬约束 @for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i)); !使用设置完成的数据构建软约束表达式; ! !软约束表达式 @for(variable:@gin(x)); !将变量约束为整数; ! 结束 此时,第一级目标的最优值为 0,第一级偏差为 0: 第二级目标: !求 dminus(1)=0,然后求解第二级目标。 模型。 设置。 变量/1..2/:x;!设置:变量/1..2/:x; ! s_con_num/1...4/:g,dplus,dminus;!软约束数量及相关参数; s_con(s_con_num(s_con_num));! s_con(s_con_num,variable):c;! 软约束系数; s_con(s_con_num,variable):c;! 结束集 数据。 g=1500 0 16 15; c=200 300 2 -1 4 0 0 5; 结束数据 min=dminus(2)+dplus(2);!第二个目标函数 2*x(1)+2*x(2)<12;!硬约束 @for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i)); ! 软约束表达式;! dminus(1)=0; !第一个目标结果 @for(variable:@gin(x)); ! 结束 此时,第二个目标的最优值为 0,偏差为 0: 第三目标 !求 dminus(2)=0,然后求解第三个目标。 模型。 设置。 变量/1..2/:x;!设置:变量/1..2/:x; ! s_con_num/1...4/:g,dplus,dminus;!软约束数量及相关参数; s_con(s_con_num(s_con_num));! s_con(s_con_num,variable):c;! 软约束系数; s_con(s_con_num,variable):c;! 结束集 数据。 g=1500 0 16 15; c=200 300 2 -1 4 0 0 5; 结束数据 min=3*dminus(3)+3*dplus(3)+dminus(4);!第三个目标函数。 2*x(1)+2*x(2)<12;!硬约束 @for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i)); ! 软约束表达式;! dminus(1)=0; !第一个目标约束条件; ! dminus(2)+dplus(2)=0; !第二个目标约束条件 @for(variable:@gin(x));! 结束 最终结果为 x1=2,x2=4,dplus(1)=100,最优利润为
-
如何在 matlab 中求不定积分
-
如何使用 python 二分法求方程的根
-
利用极限四法则求极限 例题
-
如何使用 JavaScript 求两个整数的二项式系数?
-
求组合数、求逆元素、求阶乘 O(n)
-
如何用 dy 除以 dt 求 x 的导数
-
python 如何对多组 nc 数据求平均值
-
如何用计算机求复数的模,Excel 如何计算复数?Excel复数指数加减乘除求模教程...