求最大公约数

编程时经常需要求两个数的最大公约数,本文进行一个简单的整理

辗转相除法(欧几里得算法)

32b8277a43ceb666963c2d5a00ea53b7.png

代码块

1
2
3
4
5
6
7
8
9
10
11
12
int measure(int x, int y)
{
int z = y;
while(x%y!=0)
{
z = x%y;
x = y;
y = z;
}
return z;
}

辗转相减法

909aa5d53458b0031cc5835a9c307568.png

代码块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int measure(int a,int b)
{
while(a != b)
{
if(a>b)
{
a = a - b;
}
else
{
b = b - a;
}
}
return a;

穷举法

385883d20f237cdeae38792bc1de2cb7.png

代码

1
2
3
4
5
6
7
8
9
10
int measure(int x,int y)
{
int temp = 0;
for(temp = x ; ; temp-- )
{
if(x%temp == 0 && y%temp==0)
break;
}
return temp;
}