最大公约数

简介: 【6月更文挑战第23天】

最大公约数(Greatest Common Divisor,GCD)和最小公倍数(Least Common Multiple,LCM)是数论中的两个重要概念,它们可以通过不同的算法在多种编程语言中实现。以下是一些常见编程语言中求最大公约数和最小公倍数的方法:

Python

Python内置了求最大公约数的函数math.gcd,但求最小公倍数需要自己实现或使用公式lcm(a, b) = abs(a*b) // gcd(a, b)

import math

def gcd(a, b):
    return math.gcd(a, b)

def lcm(a, b):
    return abs(a*b) // gcd(a, b)

# 示例
a = 12
b = 18
print(f"GCD of {a} and {b} is {gcd(a, b)}")
print(f"LCM of {a} and {b} is {lcm(a, b)}")

JavaScript

JavaScript没有内置的GCD函数,但可以使用欧几里得算法手动实现。

function gcd(a, b) {
   
    while (b !== 0) {
   
        let t = b;
        b = a % b;
        a = t;
    }
    return a;
}

function lcm(a, b) {
   
    return (a / gcd(a, b)) * b;
}

// 示例
let a = 12;
let b = 18;
console.log(`GCD of ${
     a} and ${
     b} is ${
     gcd(a, b)}`);
console.log(`LCM of ${
     a} and ${
     b} is ${
     lcm(a, b)}`);

Java

Java的java.math包中有一个BigInteger类,它提供了gcd方法。对于最小公倍数,可以使用相同的公式。

import java.math.BigInteger;

public class GCDLCM {
   
    public static BigInteger gcd(BigInteger a, BigInteger b) {
   
        return a.gcd(b);
    }

    public static BigInteger lcm(BigInteger a, BigInteger b) {
   
        return a.multiply(b).divide(gcd(a, b));
    }

    public static void main(String[] args) {
   
        BigInteger a = new BigInteger("12");
        BigInteger b = new BigInteger("18");
        System.out.println("GCD of " + a + " and " + b + " is " + gcd(a, b));
        System.out.println("LCM of " + a + " and " + b + " is " + lcm(a, b));
    }
}

C++

C++标准库中没有直接提供GCD和LCM的函数,但可以使用递归或循环实现欧几里得算法。

#include <iostream>

int gcd(int a, int b) {
   
    return b == 0 ? a : gcd(b, a % b);
}

int lcm(int a, int b) {
   
    return (a / gcd(a, b)) * b;
}

int main() {
   
    int a = 12;
    int b = 18;
    std::cout << "GCD of " << a << " and " << b << " is " << gcd(a, b) << std::endl;
    std::cout << "LCM of " << a << " and " << b << " is " << lcm(a, b) << std::endl;
    return 0;
}

C

C语言同样需要手动实现GCD和LCM。

#include <stdio.h>

int gcd(int a, int b) {
   
    return b == 0 ? a : gcd(b, a % b);
}

int lcm(int a, int b) {
   
    return (a / gcd(a, b)) * b;
}

int main() {
   
    int a = 12;
    int b = 18;
    printf("GCD of %d and %d is %d\n", a, b, gcd(a, b));
    printf("LCM of %d and %d is %d\n", a, b, lcm(a, b));
    return 0;
}
目录
相关文章
|
7月前
|
存储 弹性计算 人工智能
2026阿里云优惠活动参考:优惠券、代金券、云服务器新购和续费活动
2026年,阿里云持续深耕云服务领域,致力于为广大用户提供卓越品质且成本优化的云服务解决方案。为助力用户实现成本节约与效率提升的双重目标,阿里云精心策划了一系列优惠活动,覆盖云服务器ECS、数据库服务、对象存储OSS、网络产品、安全防护及人工智能等多元化产品线。这些活动不仅精准对接不同用户的个性化需求,更进一步削减了运营成本,优化了使用体验。本文为大家整理了2026年阿里云的各项优惠举措,包括优惠券、代金券及云服务器新购和续费活动等,以供广大用户参考与选择。
943 6
|
小程序 JavaScript Java
微信小程序的后端开发需要使用什么语言?
【8月更文挑战第22天】微信小程序的后端开发需要使用什么语言?
3670 65
|
存储 UED 容器
128.[HarmonyOS NEXT 实战案例三:SideBarContainer] 侧边栏容器实战:社交应用联系人列表 进阶篇
在基础篇中,我们学习了如何使用HarmonyOS NEXT的`SideBarContainer`组件创建社交应用的基本联系人侧边栏布局。本篇教程将深入探讨如何为社交应用添加更多交互功能和状态管理,提升用户体验。
240 4
|
人工智能 算法
Runway Gen-4:AI视频生成新纪元!高保真特效一键生成影视级内容
Runway Gen-4是新一代AI视频生成模型,通过参考图和文字指令即可生成具有物理真实感、叙事连贯性的高质量视频内容,支持与实拍素材无缝融合。
1270 9
Runway Gen-4:AI视频生成新纪元!高保真特效一键生成影视级内容
|
人工智能 自然语言处理 Cloud Native
在阿里云,零门槛,即刻拥有DeepSeek-R1满血版
DeepSeek 是一款强大的推理模型,尤其擅长数学、代码和自然语言处理等复杂任务。通过阿里云平台,用户可以快速调用满血版 DeepSeek API 或部署不同尺寸的模型,无需编码,最快5分钟完成,最低0元起。方案提供100万免费Token,支持弹性算力,降低硬件成本,加速创新。 解决方案链接:[点击查看](https://www.aliyun.com/solution/tech-solution/deepseek-r1-for-platforms?utm_content=g_1000401616)
963 17
|
数据采集 敏捷开发 存储
腾讯出品!这款Markdown神器让你码字效率翻倍,双模式编辑太香了!
由腾讯开源的CherryMarkdown编辑器,集思维导图式大纲写作与专业分屏模式于一身,支持实时预览、流程图绘制、多主题切换等硬核功能,助你轻松驾驭技术文档、博客写作、会议纪要等多种场景!
825 6
|
机器学习/深度学习 存储 Linux
linux中强大且常用命令:find、xargs、grep
linux中强大且常用命令:find、xargs、grep
1282 9
|
机器学习/深度学习 算法 数据挖掘
【博士每天一篇文论文-算法】A small-world topology enhances the echo state property and signal propagationlun
本文研究了小世界拓扑结构在回声状态网络(ESN)中的作用,发现具有层级和模块化组织的神经网络展现出高聚类系数和小世界特性,这有助于提高学习性能和促进信号传播,为理解神经信息处理和构建高效循环神经网络提供了新的视角。
376 0
【博士每天一篇文论文-算法】A small-world topology enhances the echo state property and signal propagationlun
|
网络架构
连接差异:探索RJ45与RJ11的世界
【4月更文挑战第21天】
1241 0
连接差异:探索RJ45与RJ11的世界
|
编解码
麒麟设置分辨率
麒麟设置分辨率
1077 1

热门文章

最新文章