如何求两个数的最大公因数和最小公倍数呢?这个题目是灵活应用运算关系符的典型例题,开拓解决问题的思维方式,下面来看看是怎么做的吧!
1.方法一
(1)思路:遍历1到n1或者n2(取决于两个数的大小)中的每个数,如果这个数对n1,n2取余都是0,那么将这个数赋值给gcd变量。
#include <stdio.h>
int main()
{
int n1, n2, i, gcd;
printf("输入两个正整数,以空格分隔: ");
scanf("%d %d", &n1, &n2);
for(i=1; i <= n1 && i <= n2; ++i)
{
// 判断 i 是否为最大公约数
if(n1%i==0 && n2%i==0)
gcd = i;
}
printf("%d 和 %d 的最大公约数是 %d", n1, n2, gcd);
return 0;
}
(2)分析:这种方法要把小于较小值的所有的数字都遍历一遍,复杂度较高。
2.方法二
(1)思路:这个算法的数学原理我不清楚,如果有知道的评论告诉我哦!我把步骤写下来:例如输入16和4
- 第一次循环:n1 = 16,n2 = 4
- 第二次循环:n1 = 12,n2 = 8 <