【10月更文挑战第14天】「Mac上学Python 25」小学奥数篇11 - 最大公约数与最小公倍数

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 本篇将通过 Python 和 Cangjie 双语实现最大公约数(GCD)和最小公倍数(LCM)的计算。这个题目帮助学生理解如何运用数学算法,并将其与编程实现结合。

本篇将通过 PythonCangjie 双语实现最大公约数(GCD)和最小公倍数(LCM)的计算。这个题目帮助学生理解如何运用数学算法,并将其与编程实现结合。

gcdgcd.png


关键词
  • 小学奥数
  • Python + Cangjie
  • 最大公约数(GCD)
  • 最小公倍数(LCM)

一、题目描述

编写一个程序,接收两个正整数,计算并输出它们的最大公约数最小公倍数

  • 最大公约数(GCD):两个数的最大公约数是能同时整除这两个数的最大整数。
  • 最小公倍数(LCM):两个数的最小公倍数是能同时被这两个数整除的最小整数。

  • 输入格式:从控制台输入两个正整数。

  • 输出格式:输出这两个数的最大公约数和最小公倍数。

二、Python 实现

# 最大公约数(GCD)计算
def gcd(a, b):
    if b == 0:
        return a
    else:
        return gcd(b, a % b)

# 最小公倍数(LCM)计算
def lcm(a, b):
    return (a * b) // gcd(a, b)

# 接收用户输入
a = int(input("请输入第一个整数: "))
b = int(input("请输入第二个整数: "))

# 计算并输出结果
gcd_result = gcd(a, b)
lcm_result = lcm(a, b)

print(f"最大公约数: {gcd_result}")
print(f"最小公倍数: {lcm_result}")

三、Cangjie 实现

package cjcDemo

import std.convert.*    // 导入数据转换模块
import std.console.*    // 导入控制台输入输出模块
import std.format.*     // 导入格式化模块

// 定义函数接收并转换用户输入为 Int64
func inputInt(info: String): Int64 {
    print(info)  // 输出提示信息
    let number: Int64 = Int64.parse(Console.stdIn.readln().getOrThrow())  // 读取并转换输入
    return number
}

// 递归实现最大公约数(GCD)计算
func gcd(a: Int64, b: Int64): Int64 {
    if (b == 0) {
        return a
    } else {
        return gcd(b, a % b)
    }
}

// 使用最大公约数求最小公倍数(LCM)
func lcm(a: Int64, b: Int64): Int64 {
    return (a * b) / gcd(a, b)
}

main(): Int64 {
    let a = inputInt("请输入第一个整数: ")
    let b = inputInt("请输入第二个整数: ")

    let gcd_result = gcd(a, b)
    let lcm_result = lcm(a, b)

    println("最大公约数: ${gcd_result}")
    println("最小公倍数: ${lcm_result}")

    return 0
}

四、图形展示(扩展部分)

以下代码使用 Python 生成最大公约数和最小公倍数计算的可视化图形。本部分是进阶扩展内容,当前阶段不要求理解

from PIL import Image, ImageDraw, ImageFont

# 创建画布
img = Image.new('RGB', (600, 300), color='white')
draw = ImageDraw.Draw(img)
font = ImageFont.load_default()

# 绘制最大公约数和最小公倍数的结果
draw.text((10, 10), "最大公约数 (GCD): 6", fill="black", font=font)
draw.text((10, 50), "最小公倍数 (LCM): 36", fill="black", font=font)

# 保存图像
img_path = "gcd_lcm_visualization.png"
img.save(img_path)
print(f"图形已保存为 {img_path}")

生成的图像如下:
gcd_lcm_visualization.pnggcd_lcm_visualization.png


五、示例执行

示例 1

输入:
第一个整数: 12
第二个整数: 18
输出:
最大公约数: 6
最小公倍数: 36

示例 2

输入:
第一个整数: 7
第二个整数: 5
输出:
最大公约数: 1
最小公倍数: 35

六、小结

通过这道最大公约数与最小公倍数的题目,学生学习了递归算法的基本用法,并掌握了如何在编程中实现数学计算。这个题目也帮助学生理解了数学算法在实际编程中的应用。


上一篇: 「Mac上学Python 24」小学奥数篇10 - 数列求和

下一篇: 「Mac上学Python 26」小学奥数篇12 - 解简易方程组

目录
相关文章
|
8天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
10天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1570 11
|
1月前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
15天前
|
存储 人工智能 开发工具
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
只需要通过向AI助理提问的方式输入您的需求,即可瞬间获得核心流程代码及参数,缩短学习路径、提升开发效率。
1118 1
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
|
15天前
|
人工智能 Serverless API
AI助理精准匹配,为您推荐方案——如何快速在网站上增加一个AI助手
通过向AI助理提问的方式,生成一个技术方案:在网站上增加一个AI助手,提供7*24的全天候服务,即时回答用户的问题和解决他们可能遇到的问题,无需等待人工客服上班,显著提升用户体验。
1238 6
|
13天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
819 28
|
2天前
|
人工智能 关系型数据库 Serverless
1024,致开发者们——希望和你一起用技术人独有的方式,庆祝你的主场
阿里云开发者社区推出“1024·云上见”程序员节专题活动,包括云上实操、开发者测评和征文三个分会场,提供14个实操活动、3个解决方案、3 个产品方案的测评及征文比赛,旨在帮助开发者提升技能、分享经验,共筑技术梦想。
526 68
|
7天前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
568 3
|
3天前
|
移动开发 JavaScript 前端开发
💻揭秘!如何用 Vue 3 实现酷炫的色彩魔方游戏✨
本文分享了开发基于Canvas技术的小游戏"色彩魔方挑战"的完整过程。游戏旨在考验玩家的观察力和耐心,通过随机生成的颜色矩阵和一个变化点,玩家需在两幅画布中找出不同的颜色点。文章详细讲解了游戏的核心功能,包括随机颜色矩阵生成、点的闪烁提示、自定义配色方案等。此外,作者展示了使用Vue 3和TypeScript开发的代码实现,带领读者一步步深入了解游戏的逻辑与细节。
109 68
|
17天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
923 5