1.相减法
算法如下:
(1)如果a>b,a=a-b;
(2)如果a<b,b=b-a;
(3)如果a=b,a或者b就是这两个数的最大公约数
(4)如果a!=b,则再执行(1)或(2)。
代码如下:
int xjf(int a,int b)
{
while(a!=b)
{
if(a>b)
{
a=a-b;
}
else if(a<b)
{
b=b-a;
}
}
return a;
}
2.辗转相除法
算法如下:
(1)对于已知的两个数a,b
(2)a除以b余数r;
(3)若r=0,则n就是所求的最大公约数,否则执行(4);
(4)令a=b,b=r;重复执行(4);
代码如下:
int xcf(int a,int b)
{
int r;
r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
return b;
}
3.穷举法
算法如下:
(1)定义c;
(2)如果a>b,则c=b;
(3)如果a<b,则c=a;
(4)如果a%c!=0||b%c!=0,则执行c--;
(5)如果a%c==0||b%c==0,则c为最大公约数
代码如下:
int qjf(int a,int b)
{
int c;
if(a>b)
c=b;
else if(a<b)
c=a;
while(a%c!=0||b%c!=0)
{
c--;
}
return c;
}