【千题百解】华为机试题:求最小公倍数

本文由鳄鱼儿分享,是一名计算机硕士研究生及阿里云社区专家博主。文章介绍了如何解决华为面试中关于求最小公倍数的问题,提供了Java、Python和C++三种语言的实现方案,强调了在Java实现中需要注意防止整数溢出的问题,并在Python部分讲解了如何处理用户输入和字符串操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

“所有命运馈赠的礼物,都已在暗中标好了价格”

👨🏻‍💻作者:鳄鱼儿

🍀个人简介

👨🏻‍🎓计算机专业硕士研究生

🦨阿里云社区专家博主

🌙优快云博客专家 & Java领域优质创作者

题目

在这里插入图片描述

解题

Java实现

注意a和b相乘时可能超过int最大值。

import java.util.Scanner;

/**
 * @Author 鳄鱼儿
 * @Description TODO
 * @date 2023/8/6 13:30
 * @Version 1.0
 */

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNext()) {
            int a = in.nextInt();
            int b = in.nextInt();
            int c = a % b;
            long d = a * b;
            while(c != 0) {
                a = b;
                b = c;
                c = a % b;
            }
            System.out.println(d / b);
        }
    }
}

Python实现

while True:
    try:
        a, b = map(int, input().split())
        c = a * b
        while b:
            a, b = b, a%b
        print(c // a)
    except:
        break
  • input()用于获取控制台输入,得到变量类型是字符串
  • map(function, iterable)将指定函数依次作用到序列的每一个元素,返回结果是一个迭代器,需要进行转换,如list(), tuple(), set()
  • split()分割字符串,默认分隔符是空格

c++实现

#include <iostream>
using namespace std;
    
int main()
{
    int x, y, ret;
    while(cin >> x >> y)
    {
        int multi = x * y;
        while(ret = (x % y))
        {
            x = y;
            y = ret;
        }
        cout << multi / y << endl;
    }
    
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鳄鱼儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值