求最大公约数有多种方法,接下来我对辗转相除法更相减损法分别做介绍。

辗转相除法: gcd(a,b) = gcd(b,a mod b)。

假如,需要求 1997 和 615 两个正整数的最大公约数,用辗转相除法,是这样进行的:
1997 / 615 = 3 (余 152)
615 / 152 = 4(余7)
152 / 7 = 21(余5)
7 / 5 = 1 (余2)
5 / 2 = 2 (余1)
2 / 1 = 2 (余0)
至此,最大公约数为1
除数余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 1997 和 615 的最大公约数 1。

更相减损法:

举例:
例1:用更相减损术求98与63的最大公约数。(一奇一偶)
解:由于63不是偶数,把98和63以大数减小数,并辗转相减:
98-63=35
63-35=28
35-28=7
28-7=21
21-7=14
14-7=7
所以,98和63的最大公约数等于7。

例2、用更相减损术求260和104的最大公约数。(两个偶数)
解:由于260和104均为偶数,首先用2约简得到130和52,再用2约简得到65和26。
此时65是奇数而26不是奇数,故把65和26辗转相减:
65-26=39
39-26=13
26-13=13
所以,260与104的最大公约数等于13乘以第一步中约掉的两个2,即1322=52。

代码实现如下:

#include<stdio.h>//辗转相除法
int gcd1(int x, int y)
{//判断x/y余数是否为0int z = x % y;//直到余数为0,则跳出循环while(z){//循环过程中,将除数给x,余数给y,求新的余数zx = y;y = z;z = x % y;}//除数y为最大公约数return y;
}//更相减损术
int gcd2(int x, int y)
{int sum1 = 1;//先判断 x y是否都是偶数while ((x % 2 == 0) && (y % 2 == 0)){sum1 *= 2;x = x / 2;y = y / 2;}while (1){//保证,被减数大于减数,不然就交换顺序if (x < y){int temp = x;x = y;y = temp;}//差放在s中int s = x - y;//判断差 和 减数 是否相等,如果是,跳出循环。if (y == s)break;else{x = y;y = s;}}//最大公约数就是约掉的若干个2的积与第二步中等数(减数=差)的乘积return y * sum1;
}int main()
{int a = 98;int b = 63;int max1 = gcd1(a, b);int max2 = gcd2(a, b);printf("%d  %d的最大公约数为 %d\n", a, b, max1);printf("%d  %d的最大公约数为 %d\n", a, b, max2);return 0;
}

求最大公约数(C语言实现)相关推荐

  1. c语言怎样求最大公约数,c语言求最大公约数

    求差判定法. 如果两个数相差不大,可以用大数减去小数,所得的差与小数的最大公约数就是原来两个数的最大公约数.例如:求78和60的最大公约数.78-60=18,18和60的最大公约数是6,所以78和60 ...

  2. C语言用for循环求最大公约数,C语言循环结构 -C语言求最大公约数

    这是一个C语言 while 循环示例:求正整数 m 和 n 的最大公约数. 问题分析 输入:两个正整数. 输出:一个正整数(最大公约数). 最大公约数(gcd)是指几个数共有的因数之中最大的一个数,比 ...

  3. c语言求最大公约数(c语言求最大公约数和最小公倍数代码)

    C语言中求两个数的最大公约数的公式是什么? int i,a=3,b=6; int max=b; //初始化b大,下面判断如果a>b就把a给max //判断a,b大小 if(a>b) max ...

  4. 用c语言怎么求最大公约数,c语言求最大公约数

    c语言求最大公约数[编辑] 概述 c语言是一种计算机编程语言,该语言的优势在于任何环境都能运行并能达到简易的方式编译.处理低级存储器和产生少量的机器码等效果. c语言是一种计算机编程语言,该语言的优势 ...

  5. 求最大公约数c语言代码_辗转相除求最大公约数原理

    辗转相除法代码 代码并不难,很多人都会写. public static int f(int a, int b){ while(b != 0){ int temp = b; b = a % b; a = ...

  6. 用函数求最大公约数c语言,C语言求最大公约数公式分享

    从键盘输入两个正整数 a 和 b,求其最大公约数和最小公倍数. 算法思想 利用格式输入语句将输入的两个数分别赋给 a 和 b,然后判断 a 和 b 的关系,如果 a 小于 b,则利用中间变量 t 将其 ...

  7. 数组求最大公约数c语言,C语言辗转相除法求2个数的最小公约数

    辗转相除法最大的用途就是用来求两个数的最大公约数. 用(a,b)来表示a和b的最大公约数. 有定理: 已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c). (证明过程请参考其它资料) 例 ...

  8. 求最大公约数c语言实验心得,C语言编程实训报告(合集)

    cout< void main()//主函数主函数主函数主函数 { int i,g; studentstu[3];while (i){i=menu(stu,3); switch(i) {case ...

  9. C语言设计函数求最大公约数,C语言程序设计课程设计--编写函数求取两个整数m,n的最大公约数和最小公倍数.doc_在线文库www.lddoc.cn...

    C语言程序设计课程设计--编写函数,求取两个整数m,n的最大公约数和最小公倍数.doc C语言程序设计课程设计C语言程序设计课程设计评语考勤(10)纪律(10)过程(40)设计报告(30)答辩(10) ...

  10. C语言:欧几里得算法求最大公约数

    文章目录 欧几里得算法 C语言:欧几里得算法求最大公约数 C语言:穷举法 欧几里得算法 举个例子说明欧几里得算法. 如图所示,用正方形地板砖,把这一块粉红色空地(长为xxx,宽为yyy,x>yx ...

最新文章

  1. iOS开发 关于启动页和停留时间的设置
  2. js-权威指南学习笔记18
  3. 2021高考成绩各科各题得分查询,2021年新疆高考分数一分一段位次表,新疆高考个人成绩排名查询方法...
  4. NYOJ 20 吝啬的国度 广度优先搜索
  5. Python中必学知识点:类方法、实例方法和静态方法
  6. 调试中的一些Python错误
  7. Python中的traceback模块
  8. iOS - Masonry自动布局
  9. c语言转图形化,「分享」C语言如何编写图形界面
  10. android中getSystemService详解
  11. Android BroadcastReceiver(一)
  12. Django之HttpRequest和HttpReponse
  13. GetRows的用法详解
  14. 使用RMAN备份与恢复数据库(2)——参数文件的备份与恢复
  15. 【干货分享】花坊类字体设计思路
  16. 武汉科技大学计算机转专业吗,武汉科技大学可以转专业吗,武汉科技大学新生转专业政策...
  17. 基于halcon的HSV颜色匹配实例
  18. 电脑使用技巧提升篇9:使用360压缩软件文件加密
  19. Android8.0 SystemUI 状态栏信号图标
  20. 个性化推荐系统,必须关注的五大研究热点

热门文章

  1. 突然怀念小时弹玻璃球的日子
  2. Spark:Jieba对数据库里提取的记录进行中文分词
  3. 处理得怎么样填空词语_六年级词语填空练习(答案)
  4. lamp部署配置及部署phpmyadmin
  5. Element UI报错:Unknown custom element: el-menu
  6. 叮当快药:8090后养生报告
  7. 伪装机器人炉石_不说炉石:招摇撞骗混入顶级电竞圈,这“伪装”技能可以给满分!...
  8. 四级作文-the relationship between parents and children
  9. HDU1253 胜利大逃亡(DFS)
  10. 反心灵鸡汤、毒鸡汤、乌鸦汤 ,金句十条,每一条都直击心灵