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;
}