最大公约数的基本原理:
两个数的最大公约数是指能同时整除它们的最大正整数。
设两数为a、b(a≥b),求a和b最大公约数。
辗转相除法
代码如下:
//只截取了一部分,完整代码可看下方
while (b<0){t = a % b;a = b;b = t;}
我们可以发现辗转相除法,无非就是提供一个暂存变量t(或者是别的,这里只是方便举例),使其储存变量a%变量b的值(隐含条件a>b),然后使得较大变量(变量a)转换为那个较小变量(变量b),而较小变量转换为两者的取余的值。并且当b=0跳出循环得到相应的最大公约数变量a。
这是一个非常经典的关于最大公约数的一个求法,该段代码也取自如何得到最简分式的例题。
完整的代码如下:
#include <stdio.h>int main(){int dividend,divisor;scanf("%d/%d",÷nd,&divisor);int a = dividend;int b = divisor;int t;while (b<0){t = a % b;a = b;b = t;}printf("%d/%d\n",dividend/a,divisor/a);return 0;
}