首页 > 其他分享 >「Mac玩转仓颉内测版48」小学奥数篇11 - 最大公约数与最小公倍数

「Mac玩转仓颉内测版48」小学奥数篇11 - 最大公约数与最小公倍数

时间:2024-12-09 23:27:52浏览次数:6  
标签:11 gcd 48 公倍数 最小 最大公约数 Int64 lcm

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


关键词
  • 小学奥数
  • 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.png


五、示例执行

示例 1

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

示例 2

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

六、小结

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


上一篇: 「Mac玩转仓颉内测版47」小学奥数篇10 - 数列求和
下一篇: 「Mac玩转仓颉内测版49」小学奥数篇12 - 解简易方程组

作者:SoraLuna
链接:https://www.nutpi.net/thread?topicId=395
來源:坚果派
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


标签:11,gcd,48,公倍数,最小,最大公约数,Int64,lcm
From: https://blog.csdn.net/weixin_44217688/article/details/144360218

相关文章

  • 2024 11 做题笔记
    NOIP没有特别爆,应该还在1.eps倍队线内,所以还有OI打,但是这个月可能whk时间比较多,随缘记吧。1209MX_R1_A集合:应该要场切的,因为组合数取模和常数问题挂掉了,引以为戒。二分图完美匹配问题考虑hall定理,由于这题的特殊限制,一个左部点集合的对应集合就是最小的点能连到的所......
  • 114. 二叉树展开为链表
    问题描述给你二叉树的根结点root,请你将它展开为一个单链表:展开后的单链表应该同样使用TreeNode,其中right子指针指向链表中下一个结点,而左子指针始终为null。展开后的单链表应该与二叉树先序遍历顺序相同。分析注意,这里应该使用同样的TreeNode,也就是评判时,直接看原......
  • 题解:P11266 【模板】完全体·堆
    题目链接洛谷P11266【模板】完全体·堆解题思路看了题解区,竟然没有人写可爱的左偏树。我们需要支持四种操作:删除集合中的元素。取集合中的最小值。合并两个集合。修改集合中的元素。那么我们可以用常数极小的左偏树(可并堆)来解决这道模板题。对于左偏树的基础操作......
  • 基于springboot+vue实现的项目评审系统 (源码+L文+ppt)4-116
    摘 要相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低运营人员成本,实现了项目评审系统的标准化、制度化、程序化的管理,有效地防止了项目评审的随意管理,提高了信息的处理速度和精确度,能够及时、准确地查询和修正项目信息、评审结果、项目申报等信息。课题主要采......
  • 基于springboot+vue实现的剧本杀管理系统(源码+L文+ppt)4-114
      摘 要剧本杀管理系统是一个综合性平台,为剧本杀游戏爱好者、创作者及商家提供多方位服务。系统具备用户账号管理、剧本分类、预约、评价和论坛交流等核心功能。通过这个平台,用户可以便捷地浏览各类剧本信息,根据兴趣和时间安排进行预约,同时在游戏结束后对体验进行反馈。......
  • 基于springboot+vue实现的项目评审系统 (源码+L文+ppt)4-116
      摘 要相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低运营人员成本,实现了项目评审系统的标准化、制度化、程序化的管理,有效地防止了项目评审的随意管理,提高了信息的处理速度和精确度,能够及时、准确地查询和修正项目信息、评审结果、项目申报等信息。课题主......
  • web前端大作业:旅游网页主题网站设计——武汉旅游网页设计(11页)HTML+CSS+JavaScript
    ......
  • 推进国产化安全应用:德承工控机DV-1100+银河麒麟操作系统Kylin V10 安装教程
    银河麒麟操作系统V10是一款适配国产软硬件平台并深入优化和创新的新一代图形化桌面操作系统,支持国内外多款主流的处理器,飞腾、鲲鹏、海思麒麟、龙芯、申威、海光、兆芯等国产CPU和Intel、AMD等平台,硬件兼容性也有显著的增强,支持更多类型的显卡、有线和无线网卡,以及超过20万款外设......
  • YOLOv11改进策略【YOLO和Mamba】| 2024 VM-UNet,高效的特征提取模块VSS block 二次创新
    一、本文介绍本文记录的是利用VM-UNet中的VSSblock优化YOLOv11的目标检测网络模型。VSSBlock与传统模块不同,它汲取了VMamba模型的优势,通过特定结构设计,在保证计算效率的同时,精准建模局部特征并学习长距离依赖,实现局部特征的高效处理与长距离依赖关系的有效学习。本文将其......
  • 《痞子衡嵌入式半月刊》 第 113 期
    痞子衡嵌入式半月刊:第113期这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。本期刊是开源项目(GitHub:JayHeng/pzh-mcu-bi-weekly),欢迎提交issue,投稿或推荐你知道的嵌入式那些事儿。上期回顾:《痞子衡嵌入式半月......