用C语言实现求两个数的最大公约数

作者:洛阳淘贝游戏开发公司 阅读:104 次 发布时间:2023-05-15 17:24:35

摘要:  C语言求最大公约数  最大公约数在数学中非常重要,它是在求两个数的最大公因数的同义词。而在C语言中,求最大公约数有多种方法。  方法一:暴力枚举法  暴力枚举法就是枚举从2到两个数中较小的一个数,看他们是否能够同时整除已知的两个数。若找到符合条件的就输出...

  C语言求最大公约数

用C语言实现求两个数的最大公约数

  最大公约数在数学中非常重要,它是在求两个数的最大公因数的同义词。而在C语言中,求最大公约数有多种方法。

  方法一:暴力枚举法

  暴力枚举法就是枚举从2到两个数中较小的一个数,看他们是否能够同时整除已知的两个数。若找到符合条件的就输出,否则输出1。由于最小的公约数是1,所以最坏的情况下遍历整个数组。

  C语言代码如下:

  ```c

  #include

  int gcd(int a,int b){

   int i,min;

   min=a

   for(i=min;i>1;i--) //枚举从2到最小值

   if(a%i==0&&b%i==0) //当i可同时整除两个数的时候则跳出循环

   break;

   if(i==1) //当枚举到1时,两个数没有公共的约数

   return 1;

   else

   return i;

  }

  void main(){

   int a,b;

   printf("请输入两个整数:");

   scanf("%d%d",&a,&b);

   printf("%d和%d的最大公约数是:%d",a,b,gcd(a,b));

  }

  ```

  方法二:辗转相除法

  辗转相除法(又称欧几里得算法)是求两个非负整数的最大公约数的一种方法,其基本思想是用较大数除以较小数,再用出现的余数去除较小数(第一次除数是10,余数是6,第二次除数是6,余数是4,第三次除数是4,余数是2,第四次除数是2,余数是0,则最大公约数为2),如此反复,直到余数是0为止;此时,负数的除数即为这两个数的最大公约数。

  C语言代码如下:

  ```c

  #include

  int gcd(int a,int b){

   return b==0?a:gcd(b,a%b);

  }

  void main(){

   int a,b;

   printf("请输入两个整数:");

   scanf("%d%d",&a,&b);

   printf("%d和%d的最大公约数是:%d",a,b,gcd(a,b));

  }

  ```

  方法三:更相减损法

  更相减损法又叫减法求最大公约数,是公元前3世纪中国的一位叫做朱世杰的数学家发明的。more subtract less法的名字说明了它是利用较大的数减去较小的数,然后用得到的差值再去减较小的数。在大约17世纪的欧洲,更相减损法被广泛应用,直到1760年代表了上限的辗转相除法才开始替代更相减损法。

  C语言代码如下:

  ```c

  #include

  int gcd(int a,int b){

   if(a==b)

   return a; //当两个数相同时,返回任意一个数

   if((a&1)==0&&(b&1)==0) //两个数是偶数时,最大公约数也是2的倍数,将两个数同时除以2

   return gcd(a>>1,b>>1)<<1; //递归调用

   if((a&1)==0&&b&1!=0) //若a是偶数,b是奇数,则将a除以2

   return gcd(a>>1,b);

   if((a&1)!=0&&b&1==0) //若a是奇数,b是偶数,则将b除以2

   return gcd(a,b>>1);

   int big=a>b?a:b;

   int small=a+b-big;

   return gcd(big-small,small);

  }

  void main(){

   int a,b;

   printf("请输入两个整数:");

   scanf("%d%d",&a,&b);

   printf("%d和%d的最大公约数是:%d",a,b,gcd(a,b));

  }

  ```

  以上三种方法都可以用于C语言中求最大公约数。在实际使用的过程中,可以根据需求选择不同的方法,以便获得更高的效率和更快的速度。

  • 原标题:用C语言实现求两个数的最大公约数

  • 本文链接:https://qipaikaifa1.com/tb/4641.html

  • 本文由洛阳淘贝游戏开发公司小编,整理排版发布,转载请注明出处。部分文章图片来源于网络,如有侵权,请与淘贝科技联系删除。
  • 微信二维码

    CTAPP999

    长按复制微信号,添加好友

    微信联系

    在线咨询

    点击这里给我发消息QQ客服专员


    点击这里给我发消息电话客服专员


    在线咨询

    免费通话


    24h咨询☎️:189-2934-0276


    🔺🔺 棋牌游戏开发24H咨询电话 🔺🔺

    免费通话
    返回顶部