leetcode 2413:最小偶数倍

文章介绍了两种方法来求解最小公倍数。第一种是通过判断数字的奇偶性,偶数时最小公倍数即为数字本身,奇数时为两数相乘。第二种方法利用最大公约数和最小公倍数的乘积关系,先计算最大公约数,然后求解。提供的代码示例分别展示了这两种方法的实现。
摘要由CSDN通过智能技术生成

df60dda0191a4562b4de22e2a51a0616.jpg

 

今天这题比较简单,一行代码就解决了,思路其实简单,就是判断下当前数的奇偶性,如果是偶数,那么最小公倍数肯定就是数本身;如果是奇数,那么就是两个数的乘积。

当然,还有一个更通俗的做法,就是根据 "最大公约数和最小公倍数的乘积等于两数乘积" 的关系进行求解,通过欧几里得方法求出最大公约数,最小公倍数也就求出来了,但是,针对这个题这就显得有点麻烦了,知道就好。下面是具体实现:

//1. 通过判断奇偶性求解class Solution {public:    int smallestEvenMultiple(int n) {        return ((n & 1) == 0) ? n : n * 2;    }};

​​​​​

//2. 通过最大公约数,最小公倍数关系求解class Solution {public:    int gcd(int a, int b) { // 求最大公约数        if (a < b) swap(a, b); // 保证a大于等于b        while (b != 0) {            int r = a % b;            a = b;            b = r;        }        return a;    }
    int lcm(int a, int b) { // 求最小公倍数        return a * b / gcd(a, b);    }
    int smallestEvenMultiple(int n) {        return lcm(2, n);        }};

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值