【C/C++】求最大公约数的三种方法

原创 2016年07月02日 20:48:47

一、最大公约数与最小公倍数

最大公约数,属于数论所探究的内容。

最大公约数可以通过下面的三种方法求出来。

最小公倍数呢,它与最大公约数的乘机为所求数之积。

 

比如求  x,y的最大公约数和最小公倍数

记住这个公式: x*y=最小公倍数*最大公约数

二、求最大公约数的三种方法

①辗转相除法

算法流程图

代码块:

int measure(int x, int y)
{	
	int z = y;
	while(x%y!=0)
	{
		z = x%y;
		x = y;
		y = z;	
	}
	return z;
}


 

运行结果:

②辗转相减法

代码块:

int measure(int a,int b)
{		
	while(a != b)
	{
		if(a>b)
		{
			a = a - b;
		}
		else 
		{
			b = b - a;
		}
	}
	return a;
}


运行结果:

③穷举法

流程图:

代码块:

int measure(int x,int y)
{
   	int temp = 0;
    for(temp = x ; ; temp-- )
    {
		if(x%temp == 0 && y%temp==0) 
	   		break; 
   	}
	return temp;
}


 

 

版权声明:本文由 皓皓松博客 创作,转载请附带链接,有问题欢迎交流。 https://blog.csdn.net/qq_31828515/article/details/51812154

C/C++单元测试培训

快速掌握C/C++单元测试技术。课程抛弃了宽泛而不能落地的理论,直面企业项目的单元测试难题,深入浅出地讲授C/C++单元测试的问题、思路与方法。在此课程的基础上,学员只需要经过一些练习,就可以在实 际的开发中应用单元测试、TDD、ETDD。
  • 2015年08月20日 17:31

三种方法求最大公约数(C语言版)

问题描述:用三种方法求两个的整数的最大公约数。 算法分析: 1.相减法:输入两整数a和b,(1)如果a>b,a=a-b;(2)如果a  (4)如果a!=b,则再执行(1)或(2) 程序实现如下图: ...
  • Aimee_mf
  • Aimee_mf
  • 2017-03-21 23:20:53
  • 3434

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

一、最大公约数     最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大...
  • Landscape_
  • Landscape_
  • 2017-03-22 22:24:35
  • 20558

常见算法:C语言求最小公倍数和最大公约数三种算法

最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,其中一个最小的公倍数是他们的最小公倍数,同样地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数,维基百科:定义点击打开链接 ...
  • iwm_NeXT
  • iwm_NeXT
  • 2012-04-11 17:22:12
  • 349920

求两个数的最大公约数的三种算法

从键盘输入两个整数,求着两个整数的最大公约数。 解题思路: 从键盘输入两个数,通过以下的三个方法实现求两个数的最大公约数:     辗转相除法:取两个数中最大的数做除数,较小的数做被除...
  • only_invarably
  • only_invarably
  • 2017-03-22 22:01:04
  • 24370

编程之美读书笔记(5)最大公约数

问题: 求两个数的最大公约数 解法一: 欧几里得辗转相除法: f(x,y) = GCD(x,y), 取k = x / y, b = x % y,则:x = k*y + b; 如果一个数能整除...
  • SJF0115
  • SJF0115
  • 2013-02-25 13:01:22
  • 5491

java算法——求最大公约数和最小公倍数

//求最大公约数和最小公倍数 /*求最大公约数方法:辗转相除法 始终用较大数除以较小数,然后用余数代替较大数 整除时的除数就是最大公约数 举例:222 407求最大公约数 222 407(407除...
  • tingzhiyi
  • tingzhiyi
  • 2016-07-28 20:26:57
  • 9774

C语言最大公约数三种算法

这次我们的作业是用三种不同的算法计算出输入两个正整数的最大公约数。
  • ZE_Fun
  • ZE_Fun
  • 2017-03-21 01:09:53
  • 3770

Java最大公约数和最小公倍数

最大公约数有下面两种方法: 辗转相除法:又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公约数的算法。 辗转相减法:即尼考曼彻斯法,其特色是做一系列减法,从而求得最...
  • shineflowers
  • shineflowers
  • 2014-12-11 15:46:19
  • 3155

求最大公约数的若干种方法(Java)

首先,最大公约数的概念,相信大家都了解,我这里就不多说了。直接看代码。实在不知道,看百度百科解释:https://baike.baidu.com/item/最大公约数 1.简单穷举法 ...
  • qq_34732088
  • qq_34732088
  • 2018-03-26 15:12:07
  • 21
收藏助手
不良信息举报
您举报文章:【C/C++】求最大公约数的三种方法
举报原因:
原因补充:

(最多只允许输入30个字)