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

时间:2021-10-05 00:39:17

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

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

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

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

 

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

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

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

①辗转相除法

算法流程图

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

代码块:

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


 

运行结果:
【C/C++】求最大公约数的三种方法

②辗转相减法

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

代码块:

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


运行结果:

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

③穷举法

流程图:

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

代码块:

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