苏小红教材P185 7.7题
- 穷举法
- 欧几里得算法
- 递归算法
#include <stdio.h>
int Gcd(int i,int j);
int main() {
int i,j;
printf("Input i,j:");
scanf("%d %d",&i,&j);
printf("%d",Gcd(i,j));
return 0;
}
/* 穷举法求最大公约数 */
//int Gcd(int i,int j)
//{
// int min;
// min = i<j ? i : j;
// for(int m=min; m>=1; m--){
// if((i%m == 0) && (j%m == 0))
// {
// return m;
// break;
// }
// }
//
//}
/* 欧几里得算法(辗转相除法) */
//int Gcd(int i,int j) {
// if (i <= 0 || j <= 0) return -1;
// if (i % j == 0)
// return j;
// else
// return Gcd(j, i%j);
//
//}
/* 递归方法 */
int Gcd(int i,int j) {
if (i <= 0 || j <= 0) return -1;
if (i > j)
return Gcd(i-j,j);
else if (j > i)
return Gcd(i, j-i);
else if (i == j)
return i;
}