C语言 | 最大公因数和最小公倍数

如何求两个数的最大公因数和最小公倍数呢?这个题目是灵活应用运算关系符的典型例题,开拓解决问题的思维方式,下面来看看是怎么做的吧!


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
  • <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值