题目: 用辗转相除法求两个数的最大公约数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, b,r;
scanf("%d %d", &a, &b);
while (b != 0)//当其中一个数为0,另一个数就是两数的最大公约数
{
r = a%b;
a = b;
b = r;
}
printf("最大公约数%d\n", a);
system("pause");
}
辗转相除法:
目的:求两个整数的最大公约数
最大公约数:能同时被两个整数整除的最大公约数
原理:
最大公约数 = 小数 与 (大数%小数) 的最大公约数
利用这条原理,反复执行,直到 大数%小数 = 0,此时较小的数就是原来两数的最大公约数
例子:
105 252
252 % 105 = 42;
105 % 42 = 21;
42 % 21 = 0;
——即21为105与252的最大公约数
这种算法比起用接连的数不断循环找出最大公约数,会节省很多步骤,可以大大加快代码的执行速度
使用软件:vs2013
运行结果: