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

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 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 - 图形变换与坐标计算

目录
相关文章
|
2月前
|
Java 索引 Python
【10月更文挑战第19天】「Mac上学Python 30」基础篇11 - 高级循环技巧与应用
本篇将介绍更深入的循环应用与优化方法,重点放在高级技巧和场景实践。我们将讲解enumerate()与zip()的妙用、迭代器与生成器、并发循环以及性能优化技巧。这些内容将帮助您编写更高效、结构更合理的代码。
66 5
|
2月前
|
数据安全/隐私保护 Python
【10月更文挑战第17天】「Mac上学Python 28」基础篇9 - 条件语句与逻辑判断
在Python中,条件语句和逻辑判断是控制程序执行流程的关键工具,帮助程序在不同条件下做出不同决策。通过本篇的学习,您将掌握单选、双分支、多选结构、单行条件表达式、条件嵌套、条件判断的类型和逻辑运算符的用法,从而更灵活地控制程序执行流程。
50 5
|
2月前
|
Python
【10月更文挑战第18天】「Mac上学Python 29」基础篇10 - 循环结构与迭代控制
在Python中,循环结构是控制程序执行的重要工具。通过学习本篇内容,您将掌握如何使用for循环和while循环来高效地处理重复任务,并了解break、continue和else的使用方式。同时,我们还会探索嵌套循环和典型应用场景中的实际应用。
41 2
|
2月前
|
存储 算法 Python
【10月更文挑战第16天】「Mac上学Python 27」小学奥数篇13 - 动态规划入门
本篇将通过 Python 和 Cangjie 双语介绍动态规划的基本概念,并解决一个经典问题:斐波那契数列。学生将学习如何使用动态规划优化递归计算,并掌握编程中的重要算法思想。
102 3
|
2月前
|
Python
【10月更文挑战第15天】「Mac上学Python 26」小学奥数篇12 - 图形变换与坐标计算
本篇将通过 Python 和 Cangjie 双语实现图形变换与坐标计算。这个题目帮助学生理解平面几何中的旋转、平移和对称变换,并学会用编程实现坐标变化。
66 1
|
2月前
|
移动开发 数据可视化 Python
【10月更文挑战第13天】「Mac上学Python 24」小学奥数篇10 - 数列求和
本篇将通过 Python 和 Cangjie 双语实现数列求和的计算。通过这个题目,学生将学会如何通过公式法和循环法求解等差数列与等比数列的和。
71 3
|
15天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
21天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
21天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
21天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!