线性丢番图方程的C++实现

本文介绍了作者在阅读《密码学与网络安全》后,为理解线性丢番图方程而编写的C++程序。通过实际代码加深了对这类方程的理解。
摘要由CSDN通过智能技术生成

阅读《密码学与网络安全》这本书,看到线性丢番图方程,就结合之前看到的一些算法,写了一个得到解的程序,加深理解。

也就把代码贴在这里:

void exEuclidean(int a,int b,int &s,int &t){
	int r1 = a, r2 = b , s1 = 1, s2 = 0, t1 = 0, t2 = 1;//初始化
	int q,r; 
	while(r2 > 0)
	{
        q = r1 / r2;

       	r = r1 - q * r2; //也就是r = r1%r2;
      	r1 = r2;
       	r2 = r;

      	s = s1 - q * s2;
	  	s1 = s2;
	  	s2 = s;
	  
	  	t = t1 - q * t2;
	  	t1 = t2;
	  	t2 = t; 
	}
	//gcd(a,b) = r1; 
	s = s1; 
	t = t1;
}

int gcd(int x,int y){
	return y == 0 ? x : gcd(y,x%y); 
} 
int main()
{
	int a,b,c;
	printf("请依次输入ax + by = c中的参数a,b,c!\n");
	scanf("%d %d %d",&a,&b,&c); 
	//首先求出gcd(a,b),利用朴素欧几里得算法 
	int gcd_a_b = gcd(a,b);
	if(c % gcd_a_b != 0){
		printf("c不能整出gcd(a,b),该方程无整数解!\n");
		return 0; 
	}
	else{ //会有无穷多个解 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值