求最大公约数的经典算法是Enclid算法,也就是欧几里得算法;
但是对于初学者,使用for循环自然达到最大公约数更容易理解
#include<stdio.h>
int main(void)
{
int m,n,gcd,i,a,b;
printf("Enter a fraction:");
scanf("%d/%d",&m,&n);
/*
//自然循环法
for(i=2;(i <= a) && (i <= b);i++)
{
if (a % i == 0 && b % i == 0)
gcd = i;
}
*/
//欧几里得算法
a = m;b = n; //不需要判定谁大谁小,运算一次后总会使 m>n。
while(b != 0) //也不需要额外判定b是否为0,第一次与每一次都是一样的。
{
i = a % b;
a = b;
b = i;
}
gcd = a;
printf("The lowest terms = %d/%d\n",m / gcd,n / gcd);
return 0;
}