更相减损法设计

首先这个方法是为了求出两个数字的最大公约数,实现的方法就是:
01:两个数字先进行判断是不是都是偶数,是的话,用2约分。

02: 循环判断直到两个数不同时为偶数的时候进行下一步,比较两个数字的大小,用大的数字减去小的数字,,重复操作,直到减数和差相等,

03:这个时候得出来的差和约去的n 个2的乘积就是最大公约数

设计思路

01:定义一个flag记录约去2的个数
02:使用while循环更相相减

while(a != b)
{ while(a>b){a = a -b;}while(b>a){b = b-a;}
}

这里的话实际上用函数写循环更方便,在while(){}里面加上的是if(){}的大小的判断语句,这样一直调用会更好
03:输出控制

代码

/*
1.任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步;2.以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继
续这个操作,直到所得的减数和差相等为止。3.第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数*/#include <stdio.h>int main(void)   //  2,8    9,12  32,17
{/*-----输入2个整数,输出最大公约数-----------------------*/int num1,num2;int flag = 0;int temp;int result; scanf("%d %d", &num1, &num2);while((num1%2 == 0) && (num2%2 == 0))   // 表示是偶数 { flag = flag+1;    // 记录约去了几个2 num1 = num1 /2; num2 =num2 / 2;}  if(num1 > num2)  // 1,4     {temp = num1 - num2;while(temp != num2){while(temp > num2)  //  差和较小的数字的比较 {temp = temp - num2; // 差 } while(num2 > temp) {num2 = num2 - temp;}}  // 直到跳出了循环的话就说明减数和差的大小相等了 }else   //1,4     9,12 {temp = num2 - num1;  //3,1    3,9 while(temp != num1){while(temp > num1)  //  差和较小的数字的比较 {temp = temp - num1; // 差 } while(num1 > temp)    // 6,3   3,3 {num1 = num1 - temp;}}}  if(flag == 0)  // 没有进行第一步的话,最后出的结果会是0
{result = temp;
}
else
{for(int t = 1; t<=flag; t++)
{result =  2* temp;   // 与若干个2相乘
}
}
printf("%d", result);
return 0; /*----- -----------------------*/}

c语言——更相减损法相关推荐

  1. C语言实现辗转相除法和更相减损法求两数最大公约数,及求最小公倍数的方法

    在学习从C语言过程中,我们会遇到一个题目,求两个整数的最大公约数,那么接下来分别介绍两种方法求最大公约数 1,辗转相除法 辗转相除法, 又名欧几里德算法(Euclidean Algorithm),是求 ...

  2. C语言复习---获取最大公约数(辗转相除法和更相减损法)

    源自:百度百科 辗转相除法 辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法. 例如,求(319,377): ∵ 319÷377=0(余319) ∴(319,377)=(3 ...

  3. c语言最大公约数更相减损法,【C语言】最大公约数(更相减损法)和(辗转相除法)...

    #include #include /* 编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数. 例如:输入传入(0 , 5)函数返回5,传入(10 , 9)函数返回1,传入(12 , ...

  4. C语言实现最大公约数的辗转相除法和更相减损法

    最大公约数:指两个或多个整数共有约数中最大的一个.a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号. 目录 1.辗转相除法 2.更 ...

  5. C语言:求最大公约数-更相减损法(循环自定义函数的定义与调用)

    又是王老师的一道练习题: 任务描述 1.任意给定两个正整数:判断它们是否都是偶数.若是,则用2约简:若不是则执行第二步: 2.以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数.继续这 ...

  6. 最详细最简单:最大公因数求法、辗转相除法、更相减损法,入门ACM,杭电水题,算法递归,初级算法题一看就懂

    文章目录 前言 一.名称定义 1.最大公约数 2.辗转相除法 3.更相减损法 二.ACM杭电入门题 1.解题思路 三.解题参考代码(C语言,C++) 0.最优算法(C++) 1.辗转相除求解(C语言) ...

  7. 更相减损术程序设计c语言,更相减损术

    本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 更相减损术是出自<九章算术>的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合 ...

  8. 更相减损法java代码_Python基于更相减损术实现求解最大公约数的方法

    本文实例讲述了Python基于更相减损术实现求解最大公约数的方法.分享给大家供大家参考,具体如下: 先从网上摘录一段算法的描述如下: 更相减损法:也叫 更相减损术,是出自< 九章算术>的一 ...

  9. C:求两个数的最大公约数详解(硬核算法,辗转相除法,更相减损法)

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

最新文章

  1. linux中awk下 gsub函数用法
  2. Linux快速查看某条命令的版本和存放的位置(ls -l `which mvn`)
  3. Shell编程进阶篇(完结)
  4. 科大星云诗社动态20211130
  5. 互联网日报 | 6月16日 星期三 | 滴滴试点早高峰拼成0佣金计划;小米“急”招自动驾驶相关人才;苹果正式推出播客订阅服务...
  6. html设置在父元素底部对齐,如何将div对齐到父元素的底部
  7. UIImageView contentModel
  8. 我的世界java致命错误_《我的世界》六个“致命错误”,最后一个“不作死就不会死”...
  9. 模拟个密保卡的效果,没用JS框架
  10. cocos2d-x—schedule介绍
  11. python对象的相关术语
  12. mysql经典46_mysql练习46题 PDF 下载
  13. LeetCode:累加数【306】
  14. PXE启动livecd
  15. 申请微信公众号平台流程
  16. 透视投影中已知两平面的单应矩阵,能否求出这两平面的夹角?
  17. 搭建一款属于自己的,微信/抖音小程序,通过广告赚钱
  18. 2021-03-05 pandas(合并_分组聚合_复合索引)
  19. 华为百度挺进“云手机”!5G时代的超级入口来了
  20. 目标检测(Object Detection)--Faster R-CNN算法

热门文章

  1. python阶乘求和的代码_Python阶乘求和的代码详解
  2. ltunes无法验证服务器,itunes无法验证服务器s.mzstatic… - Apple 社区
  3. CentOS7添加win7启动项
  4. 机器学习中你不得不知道的数学符号表示
  5. 数学建模系列-评价模型(五)---灰色综合评价法
  6. python的Django项目配置运行(pyCharm)
  7. idea上git使用初体验(周记)
  8. Kubernetes(k8s)DNS(CoreDNS)介绍
  9. 视频会议为企业数字化改革提供新的的发展方向
  10. tp5框架实现登录功能