1. 程式人生 > >遞迴法計算兩個數的最大公約數

遞迴法計算兩個數的最大公約數

題目內容:利用最大公約數的性質計算。對正整數a和b,當a>b時,若a中含有與b相同的公約數,則a中去掉b後剩餘的部分a-b中也應含有與b相同的公約數,對a-b和b計算公約數就相當於對a和b計算公約數。反覆使用最大公約數的上述性質,直到a和b相等為止,這時,a或b就是它們的最大公約數。這三條性質,也可以表示為: 性質1 如果a>b,則a和b與a-b和b的最大公約數相同,即Gcd(a, b) = Gcd(a-b, b)性質2 如果b>a,則a和b與a和b-a的最大公約數相同,即Gcd(a, b) = Gcd(a, b-a)性質3 如果a=b,則a和b的最大公約數與a值和b值相同,即Gcd(a, b) = a = b
程式執行結果示例1:Input a,b:16,24↙
8
程式執行結果示例2:Input a,b:-2,-8↙
Input error!
輸入提示資訊:“Input a,b:”
輸入錯誤提示資訊:“Input error!\n”
輸入格式:"%d,%d"
輸出格式:"%d\n"

#include<stdio.h>
int Gcd(int a,int b);
int main()
{
int a,b;
printf("%d,%d",&a,&b);
if(a>0&&b>0)
printf("%d\n",Gcd(a,b));
else
printf(“Input error\n”);
}

int Gcd(int a,int b) \遞迴計算最大公約數就是利用了兩數不斷相減,最後減到相等時就是最大公約數,從下面的函式可以體現。
{
if(a==b) return a;
else if (a>b) return Gcd(a-b,b);
else if(a<b) return Gcd(a,b-a);
}