1.欧几里得算法(辗转相除法)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>int gcd(int a, int b)
{if (b == 0){return a;}else if (a == 0){return b;}else{return gcd(b, a % b);}
}
int main()
{int a, b;printf("请输入两个数:\n");scanf("%d %d", &a, &b);printf("最后的结果是:%d", gcd(a, b));
}

2.更相减术法:最常见的求解公约数的方法:将两数相减,:先判断两个数是否相等,若两数相等,则其最大公约数为其本身;若两数不等,则最差,然后用这个较小数与他们之间的差值进行比较,如果相等,则该差值就是其最大公约数,如果不等,则继续执行该比较与减法操作,直到最小数与差值相等为止。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int gcd(int a, int b)
{while (true){if (a > b){a = a - b;}else if (b > a){b = b - a;}else{return a;//如果两数相等,则返回最小值(该数也是最大公约数)}}
}
int main()
{int a, b;printf("请输入两个数:\n");scanf("%d %d", &a, &b);printf("最后的结果是:%d", gcd(a, b));
}

3.stein算法(结合辗转相除法以及更相减术法的优势,以及移位运算得到)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int gcd(int a, int b)
{if (a == 0){return b;}if (b == 0){return a;}if (a % 2 == 0 && b % 2 == 0){return 2 * gcd(a >> 1, b >> 2);}else if (a % 2 == 0){return (a >> 1, b);}else if (b % 2 == 0){return(a, b >> 1);}
}
int main()
{int a, b;printf("请输入两个数:\n");scanf("%d %d", &a, &b);printf("最后的结果是:%d", gcd(a, b));
}

求最大公约数的几种常见方法(C语言)相关推荐

  1. Python求最大公约数的五种常见方法

    求最大公约数是习题中比较常见的类型,下面小编会给大家提供五种比较常见的算法,记得帮忙点个赞哦! 一般来说,最大公约数的求法大概有5种 方法一:短除法 短除法是求最大公因数的一种方法,也可用来求最小公倍 ...

  2. c语言实现求最大公约数的三种方法

    一.最大公约数 最大公因数,也称最大公约数.最大公因子,指两个或多个整数共有约数中最大的一个.a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也 ...

  3. 用C语言求最大公约数的4种方法

    C语言求最大公约数的四种方法如下: 辗转相除法:通过不断地交换两个数,使较大的数除以较小的数,最后得到的余数即为最大公约数. 更相减损术:通过不断地让两个数减去较小的数,最后得到的结果即为最大公约数. ...

  4. 求最大公约数的4种方法

    一.最大公约数与最小公倍数 最大公约数,属于数论所探究的内容. 最大公约数可以通过下面的三种方法求出来. 最小公倍数呢,它与最大公约数的乘机为所求数之积. 比如求 x,y的最大公约数和最小公倍数 记住 ...

  5. 求最大公约数的4种算法(C++)

    求最大公约数的4种算法(C++) 一.实验目的 1.计算两个正整数的最大公约数和最小公倍数,并进行程序的调式与测试. 2.理解四种不同的求最大公约数的方法,学习其思维模式. 3.了解算法的概念.对问题 ...

  6. python中求最小公约数,python求最大公约数和最小公倍数的简单方法

    python求最大公约数和最小公倍数的简单方法 python怎么求最大公约数和最小公倍数 一.求最大公约数 用辗转相除法求最大公约数的算法如下: 两个正整数a和b(a>b),它们的最大公约数等于 ...

  7. 最大公约数简便算法_求最大公约数的4种算法

    for(z=0; z<10000000; z++) 循环只是为了增加程序的运行时间, 让我们体会算法的时间复杂度. 算法一:短除法 想法,采用短除法找出2个数的所有公约数,将这些公因子相乘,结果 ...

  8. 使用定制的NSDictionary的方法,对NSArray进行排序(附:数组排序两种常见方法)

    NSArray中存放的是NSDictionary,可以使用策略的方法对NSDictionary进行定制,增加比较的方法.然后调用NSArray的sortUsingSelector方法对数组进行排序,这 ...

  9. python求最大素数_Python实现求最大公约数及判断素数的方法

    本文实例讲述了Python实现求最大公约数及判断素数的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python def showMaxFactor(num): cou ...

最新文章

  1. linux 连接跟踪nf_conntrack 与 NAT和状态防火墙
  2. 掘金专访 - 收藏集 - 掘金
  3. [转载]模糊系统:挑战与机遇并存——十年研究之感悟 王立新
  4. (002)每日SQL学习:删除名称重复的数据
  5. python有趣函数_python中有趣的函数
  6. php 操作文件夹 (遍历 计算大小)
  7. Community Enterprise Operating System ISO 全镜像下载
  8. 7-1 数组插入元素 (10 分)
  9. 重头戏!ZeroMQ的发布-订阅模式详解:ZMQ_PUB、ZMQ_SUB
  10. TP5 生成二维码并合成图片
  11. 什么是大数据分析 主要应用于哪些行业?以制造业为例
  12. trinity运行原理及常见报错(二)
  13. [Excel]如何使Vlookup由右往左找? 或使Hlookup由下往上找?
  14. 论文阅读: Spatial Dual-Modality Graph Reasoning for Key Information Extraction (关键信息提取算法)
  15. 【开源推荐】XMM Go语言环境中完全自主实现的第三方内存管理库
  16. maven 指令之package 和install的区别
  17. 绘图---PS使用教程总结(一)基本操作
  18. 这些阻碍程序员升职加薪的行为,你中招了几个?
  19. 如何利用Fiddler抓取websocket数据包?
  20. 易 键盘读取,识别键盘代码,程序中响应键盘,键盘输入等,详细例子,手把手教会你!

热门文章

  1. 教你认识各种分辨率的英文缩写
  2. 初识 GitHub · 简介篇
  3. Java中的天使和魔鬼sun.misc.Unsafe
  4. micropython esp8266教程_ESP8266 Micropython – 连接大学Wi-Fi(WPA2 Enterprise PEAP)
  5. 【毕业设计系列】033:基于MATLAB语言的实时变声器系统【含Matlab源码】
  6. IS-IS LSDB详解(华为设备)
  7. 【题解】将军令 Luogu P3942 (未完成)
  8. 天津海洋功能区划获批复 排海污水须100%达标-天津海洋功能区划-污水-达标率
  9. nasm预处理器(1)
  10. JointJS:可与Visio相媲美的开源在线制图工具