欧几里得扩展算法

      1 #include<stdio.h>
      2 int gcd(int a, int b)
      3 {
      4     if (b == 0)
      5       return a;
      6     return gcd(b, a % b);
      7 }
      8 
      9 int main(void)
     10 {
     11     int a, b;
     12     printf("please input a:\n");
     13     scanf("%d", &a);
     14     printf("please input b:\n");
     15     scanf("%d", &b);
     16     printf("rtn = %d\n", gcd(a, b));
     17     return 0;
     18 }

扩展算法先挖坑


      1 /*
      2  *  extend_lcd
      3  */
      4 
      5 #include<stdio.h>
      6 int extended_euclid(int a, int b, int *x, int *y)
      7 {
      8     int n, tmp;
      9 
     10     if(b == 0){
     11         *x = 1;
     12         *y = 0;
     13         return a;
     14     }
     15     n = extended_euclid(b, a % b, x, y);
     16     tmp = *x;
     17     *x = *y;
     18     *y = tmp - (a / b) * *y;
     19     return n;
     20 }
     21 
     22 int main(void)
     23 {
     24     int a, b;
     25     int x, y;
     26     printf("please input a and b:\n");
     27     scanf("%d %d", &a, &b);
     28     extended_euclid(a, b, &x, &y);
     29     printf("x = %d, y = %d\n", x , y);
     30     return 0;
     31 }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值