美文网首页
欧几里得扩展-逆元求解

欧几里得扩展-逆元求解

作者: klaaay | 来源:发表于2018-03-19 20:45 被阅读0次

核心公式:xa + yb = gcd(a,b)

逆元为上述公式的特殊情况(gcd(a,b)== 1,a和b互为质数)

老师上课提问:1~26哪些满足与26互质,满足互质其逆元为多少?(即求乘法加密的key)

代码实现

#include <stdio.h>
int gcd(int a, int b) {
    if (b == 0) {
        return a;
    }
    else {
        return gcd(b, a % b);
    }
}

int x, y, q;
void ex_Eulid(int a, int  b) {
    if (b == 0) {
        x = 1;
        y = 0;
        q = a;
    }
    else {
        ex_Eulid(b, a % b);
        double temp = x;
        x = y;
        y = temp - a / b * y;
    }
}
int main() {
    int i;
    for (i = 1; i <= 26; i++) {
        if(gcd(i,26) == 1){
            ex_Eulid(i,26);
            printf("%d=(%d)*%d+(%d)*%d\n", q, x, i, y, 26);
        }
    }
    return 0;
}

运行结果

运行结果

上课笔记

仿真加密 扩展欧几里得递归系数推导 扩展欧几里得

相关文章

  • 组合数求解

    扩展欧几里得算法原理求解逆元的方法(本文采用扩展欧几里得算法进行求解)求组合数的两种方法Lucas定理

  • 欧几里得扩展-逆元求解

    核心公式:xa + yb = gcd(a,b) 逆元为上述公式的特殊情况(gcd(a,b)== 1,a和b互为质数...

  • 扩展欧几里德

    扩展欧几里得 求解不定方程 ax+by=gcd(a, b) 的整数解 对于方程 ax+by=c, 如果 gcd(a...

  • 利用扩展的欧几里得算法求逆元

    首先说一下逆元的定义。存在一个数a使得ax对y进行取余运算,得到的值是一,则成为a是x的逆元。在数学中记做a * ...

  • 扩展欧几里得算法

    资料 欧几里得算法 扩展欧几里得算法 扩展欧几里得算法应用 欧几里得算法 欧几里得算法用于求两个数的最大公约数 证...

  • 扩展欧几里得算法

    扩展欧几里得算法(Extended Euclidean algorithm)是欧几里得算法(又叫辗转相除法)的扩展...

  • 扩展欧几里得

    https://vjudge.net/problem/HDU-2669 1.最大公约数在d中2.解释求整数x, y...

  • 算法学习(2)----丢番图方程

    之前一篇随笔"算法学习(1)----扩展欧几里得算法"记录了对朴素欧几里得算法和扩展欧几里得算法的学习和认识...

  • 扩展欧几里德算法

    扩展欧几里得算法(英语:Extended Euclidean algorithm)是欧几里得算法(又叫辗转相除法)...

  • 素数定理-欧几里得算法-乘法逆元

    一、素数定理 素数定理给出的是估计素数个数的方法: 设π(x)是小于x的素数的个数,则 π(x)≈x/l...

网友评论

      本文标题:欧几里得扩展-逆元求解

      本文链接:https://www.haomeiwen.com/subject/izfmqftx.html