最大公约数的基本原理:
两个数的最大公约数是指能同时整除它们的最大正整数。
设两数为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;
}