c语言——更相减损法
更相减损法设计
首先这个方法是为了求出两个数字的最大公约数,实现的方法就是:
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语言——更相减损法相关推荐
- C语言实现辗转相除法和更相减损法求两数最大公约数,及求最小公倍数的方法
在学习从C语言过程中,我们会遇到一个题目,求两个整数的最大公约数,那么接下来分别介绍两种方法求最大公约数 1,辗转相除法 辗转相除法, 又名欧几里德算法(Euclidean Algorithm),是求 ...
- C语言复习---获取最大公约数(辗转相除法和更相减损法)
源自:百度百科 辗转相除法 辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法. 例如,求(319,377): ∵ 319÷377=0(余319) ∴(319,377)=(3 ...
- c语言最大公约数更相减损法,【C语言】最大公约数(更相减损法)和(辗转相除法)...
#include #include /* 编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数. 例如:输入传入(0 , 5)函数返回5,传入(10 , 9)函数返回1,传入(12 , ...
- C语言实现最大公约数的辗转相除法和更相减损法
最大公约数:指两个或多个整数共有约数中最大的一个.a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号. 目录 1.辗转相除法 2.更 ...
- C语言:求最大公约数-更相减损法(循环自定义函数的定义与调用)
又是王老师的一道练习题: 任务描述 1.任意给定两个正整数:判断它们是否都是偶数.若是,则用2约简:若不是则执行第二步: 2.以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数.继续这 ...
- 最详细最简单:最大公因数求法、辗转相除法、更相减损法,入门ACM,杭电水题,算法递归,初级算法题一看就懂
文章目录 前言 一.名称定义 1.最大公约数 2.辗转相除法 3.更相减损法 二.ACM杭电入门题 1.解题思路 三.解题参考代码(C语言,C++) 0.最优算法(C++) 1.辗转相除求解(C语言) ...
- 更相减损术程序设计c语言,更相减损术
本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 更相减损术是出自<九章算术>的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合 ...
- 更相减损法java代码_Python基于更相减损术实现求解最大公约数的方法
本文实例讲述了Python基于更相减损术实现求解最大公约数的方法.分享给大家供大家参考,具体如下: 先从网上摘录一段算法的描述如下: 更相减损法:也叫 更相减损术,是出自< 九章算术>的一 ...
- C:求两个数的最大公约数详解(硬核算法,辗转相除法,更相减损法)
最大公因数,也称最大公约数.最大公因子. 定义: 指两个或多个整数共有约数中最大的一个. a,b的最大公约数 记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有 ...
最新文章
- linux中awk下 gsub函数用法
- Linux快速查看某条命令的版本和存放的位置(ls -l `which mvn`)
- Shell编程进阶篇(完结)
- 科大星云诗社动态20211130
- 互联网日报 | 6月16日 星期三 | 滴滴试点早高峰拼成0佣金计划;小米“急”招自动驾驶相关人才;苹果正式推出播客订阅服务...
- html设置在父元素底部对齐,如何将div对齐到父元素的底部
- UIImageView contentModel
- 我的世界java致命错误_《我的世界》六个“致命错误”,最后一个“不作死就不会死”...
- 模拟个密保卡的效果,没用JS框架
- cocos2d-x—schedule介绍
- python对象的相关术语
- mysql经典46_mysql练习46题 PDF 下载
- LeetCode:累加数【306】
- PXE启动livecd
- 申请微信公众号平台流程
- 透视投影中已知两平面的单应矩阵,能否求出这两平面的夹角?
- 搭建一款属于自己的,微信/抖音小程序,通过广告赚钱
- 2021-03-05 pandas(合并_分组聚合_复合索引)
- 华为百度挺进“云手机”!5G时代的超级入口来了
- 目标检测(Object Detection)--Faster R-CNN算法