辗转相除法(举例)
辗转相除法是为了算出两个数的最大公约数,相比与穷举法来说,更节省时间。
比如32和26两个数
32%26=6
26%6=2
6%2=0(2即为两个数的最大公约数)
将第一个式子的除数当成第二个式子的被除数,第一个式子的余数当成第二个式子的除数,直到余数为零时为止,最后一个式子的除数即为所求最大公约数。
辗转相除法(代码)
通过辗转相除法来计算两个数的最大公因数
代码如下:
#include<stdio.h>
int main()
{
int a, b,c;
scanf("%d%d", &a, &b);
while (b!= 0)
{
c = a % b;
a = b;
b = c;
}
printf("%d",a);
return 0;
}
初学者疑问解答
1. 为什么是whie(b!=0)
例子中的条件给的是当余数为0时停止循环,也就是c,但是经过while循环,b=c互换以后c的值就换到了b上面,所以条件要求b!=时停止循环,也就相当于余数为零时停止循环。
2. 为什么是printf("%d",a)
此问题跟上面的第一个问题相似,举例上说明打印 c=a%b的除数,也就是b,但是经过一次循环以后,经过条件a=b,b的值赋给了a,所以打印除数,等同于打印a的值。