学习笔记——扩展欧几里德

本文详细介绍了扩展欧几里德算法,包括其在解决不定方程ax + by = c中的应用,以及与逆元和欧拉定理、费马小定理的关系。通过实例解析算法原理,并提供相关代码实现。
摘要由CSDN通过智能技术生成

翻了好久的博客终于找到了一篇我能看懂的博客。。。。。。。可能是因为我太笨了,大牛们写的我都无法理解。。。。。。

下面开始进入正题。

假设有两个方程:

        ax + by = gcd(a,b);

        bx’ + (a%b)y’ = gcd(b,a%b);

由欧几里德可知gcd(a,b) = gcd(b,a%b)

那么 ax + by = bx’ + (a%b)y’

         = bx’ + [a - (a/b)*b]*y’//之前对于取模之停留在取余数,不知道a%b=a - (a/b)*b

         = ay’ + b[x’ - (a/b)*y]

那么就有恒等关系 x = y’; y = x’ - (a/b)*y’

 

求解不定方程 ax + by = c

令 d = gcd(a,b)

则 (a/d)*x + (b/d)*y = c/d , 那么原不定方程有有解的条件就是 c 是 gcd(a,b) 的倍数

如果有解那么 令 k = c/d 则 k*(ax0 + by0) = k*d ,即 (a/d)*x0 + (b/d*y0) = 1

设(x0,y0) 是 (a/d)*x0 + (b/d*y0) = 1 的一组解,则x = (c/d)*x0; y=(c/d)*y0;

(x,y)是 ax + by = c 的一组解。

不定方程的通解: 

若(x0,y0)是不定整数方程ax+by = c的一组解,则他的任意整数解都可以表示成

(x0 + kb’, y0 - ka’),其中a’ = a/gcd(a,b), b’ = b/gcd(a,b).

A/B:

设有 (A/B)%P = k (P为素数) , 则 A/B = k + P*x , 因此 A = k*B + P*B*x。

设 A%P = n ,则 n = k*B%P   即, k*B = n + P*y

则 (k/n)*B + (-y/n)*P = 1 = gcd(B,P)

逆元?

突然冒出来的逆元。。。。。。。

直接上公式吧!

欧拉定理: aφ(n) = 1(mod n)(gcd(a,n) = 1)

费马小定理: ap-1 = 1(mod p)(gcd(a,p)=1)  (p为素数)

有没有发现什么? 是的这就是同一个式子。

对于欧拉函数当且仅当 n 为素数时φ(n)=n-1 。

扩展欧几里得 与 逆元:

设ax +py = 1(p为素数。是不是很眼熟,没错和A/B里面的是同一个式子)  

下面来波骚操作, ax % p + py % p = 1 % p

则 ax % p = 1 % p 即 ax = 1(mod p)

 

 

最后贴上我的垃圾代码:

#include <iostream>
#include <cstdio>
#define ll long long
using namespace std;
ll extgcd(ll a,ll b,ll &x, ll &y)  // 求解 ax + by = 1
{
    ll res=0;
    if (!b) res=a,x=1,y=0;
    else res=extgcd(b,a%b,y,x),y-=(a/b)*x;
    return res;                    //返回a与b的最大公约数
}           //x,y为ax+by=1的一组可行解
void Indefinite_equation(ll a,ll b,ll c) // 求解 ax + by = c
{
    ll x,y;
    ll d=extgcd(a,b,x,y);
    ll k=c/d;
    if (c%d){printf("No solution\n"); return;}
    x=k*x;
    //x=x+t*(k*b/d);     通解
    y=(c-a*x)/b;
    printf("x=%lld; y=%lld;\n",x,y);
}
int main()
{
    ll a,b,c;
    scanf("%lld%lld%lld",&a,&b,&c);
    Indefinite_equation(a,b,c);
    return 0;
}

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值