扩展欧几里得算法-求逆

扩展欧几里得算法介绍

👀已知整数a、b,扩展欧几里得算法可以在求得a、b的最大公约数的同时,能找到整数x、y(其中一个很可能是负数),使它们满足等式
ax + by = gcd(a,b)
那么,扩展欧几里得算法的一个作用就是得到ax+by=gcd(a,b)的整数解。

计算过程
有两个数a,b,对它们进行辗转相除法,可得它们的最大公约数。然后,收集辗转相除法中产生的式子,倒回去,可以得到ax+by=gcd(a,b)的整数解。
在这里插入图片描述

定理公式
(根据《信息安全数学基础》一书上得出的结论公式 输出表格)
在这里插入图片描述
在这里插入图片描述
c语言代码

/*运用广义欧几里得除法求整数s和t,使得s*a+t*b=(a,b)*/
#include<stdio.h>
int s[100];
int t[100];
int q[100];
int r[100];
int main()
{
	int a,b;
	printf("-------------< 广义欧几里得求满足s*a+t*b=(a,b)的s和t >------------------hiya--\n\n");
	printf("请输入两个整数a和b:") ;
	scanf("%d %d",&a,&b) ;
	s[0] = 1 ; s[1] = 0 ;
	t[0] = 0 ; t[1] = 1 ;
	r[0] = a ; r[1] = b ;
	q[1] = r[0] / r[1] ;
	r[2] = r[0] % r[1] ;
	printf("__________________________________________________________________________________\n");
	printf("|    j    |   q[j]  |   r[j]  |  r[j+1] |  s[j-1] |  s[j]   |  t[j-1] |   t[j]  |\n") ;
	printf("|_________|_________|_________|_________|_________|_________|_________|_________|\n");
    printf("|%9d|%9d|%9d|%9d|%9d|%9d|%9d|\n",1,q[1],r[1],r[1+1],s[1-1],s[1],t[1-1],t[1]) ; 
    r[3] = r[1] % r[2];
    int j=2;
    while(1)
    {
    	q[j]   = r[j-1] / r[j];
    	r[j+1] = r[j-1] - q[j]*r[j];
    	s[j]   = s[j-2] -  q[j-1]*s[j-1] ;
    	t[j]   = t[j-2] -  q[j-1]*t[j-1] ;
        printf("|%9d|%9d|%9d|%9d|%9d![在这里插入图片描述](https://img-blog.csdnimg.cn/d8f635b67a7048dbbb86fe97beec0d29.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAaGl5YWho,size_20,color_FFFFFF,t_70,g_se,x_16)
|%9d|%9d|%9d|\n",j,q[j],r[j],r[j+1],s[j-1],s[j],t[j-1],t[j]) ;
		if(r[j+1]==0) break; 
        j++;
	}
	printf("\n\n\n因此,s = %d, t= %d 使得\n",s[j],t[j]);
	printf("\t\t\ts*a+t*b=(a,b),\n\t\t\t即(%d)*(%d)+(%d)*(%d)=%d\n",s[j],a,t[j],b,r[j]);
	return 0;
 } 

运行代码
运行代码

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值