最大公约数和最小公倍数-多语言
目录
C 语言实现
Python 实现
Java 实现
Js 实现
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
程序分析:
-
最小公倍数=输入的两个数之积除于它们的最大公约数,关键是求出最大公约数;
-
求最大公约数用辗转相除法(又名欧几里德算法)
1、证明:设c是a和b的最大公约数,记为c=gcd(a,b),a>=b,
令r = a mod b
设a = kc,b = jc,则k,j互素,否则c不是最大公约数
据上,r = a-mb = kc-mjc = (k-mj)c
可知r也是c的倍数,且k-mj与j互素,否则与前述k,j互素矛盾,
由此可知,b与r的最大公约数也是c,即gcd(a,b) = gcd(b,a mod b),得证。
2、算法描述:
第一步:a ÷ b,令r为所得余数(0≤r 第二步:互换:置 a←b,b←r,并返回第一步。
C 语言实现
#include <stdio.h>int main() {int a, b, t, r;// 提示用户输入两个数字printf("请输入两个数字:\n");scanf("%d %d", &a, &b);// 确保 a 是较大的数字if (a < b) {t = b;b = a;a = t;}// 计算 a 和 b 的乘积int n = a * b;// 使用辗转相除法计算最大公约数r = a % b;while (r != 0) {a = b;b = r;r = a % b;}// 输出结果printf("这两个数的最大公约数是 %d,最小公倍数是 %d\n", b, n / b);return 0; // 返回0表示程序正常结束
}
- 头文件:包含标准输入输出库
#include <stdio.h>。 - 主函数:
int main()是程序的入口点。 - 输入:使用
scanf获取用户输入的两个整数a和b。 - 确保 a 是较大的数字:如果
a小于b,则交换它们的值。 - 计算乘积:计算
a和b的乘积并存储在n中。 - 计算最大公约数:使用辗转相除法(欧几里得算法)计算最大公约数。
- 输出结果:使用
printf输出最大公约数和最小公倍数(通过n / b计算)。 - 返回值:
return 0;表示程序正常结束。
这种实现方式清晰易懂,能够正确计算并输出两个数字的最大公约数和最小公倍数。
Python 实现
def main():# 提示用户输入两个数字a, b = map(int, input("请输入两个数字:\n").split())# 确保 a 是较大的数字if a < b:a, b = b, a# 计算 a 和 b 的乘积n = a * b# 使用辗转相除法计算最大公约数r = a % bwhile r != 0:a, b = b, rr = a % b# 输出结果print(f"这两个数的最大公约数是 {b},最小公倍数是 {n // b}")if __name__ == "__main__":main() # 调用主函数
- 使用
input()函数获取用户输入,并使用map()和split()将输入的字符串转换为两个整数。 - 通过条件判断确保
a是较大的数字。 - 计算两个数字的乘积
n。 - 使用辗转相除法计算最大公约数。
- 最后输出最大公约数和最小公倍数
Java 实现
import java.util.Scanner;public class GCDAndLCM {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 提示用户输入两个数字System.out.println("请输入两个数字:");int a = scanner.nextInt();int b = scanner.nextInt();// 确保 a 是较大的数字if (a < b) {int t = b;b = a;a = t;}// 计算 a 和 b 的乘积int n = a * b;// 使用辗转相除法计算最大公约数int r = a % b;while (r != 0) {a = b;b = r;r = a % b;}// 输出结果System.out.printf("这两个数的最大公约数是 %d,最小公倍数是 %d\n", b, n / b);scanner.close(); // 关闭扫描器}
}
- 使用
Scanner类获取用户输入。 - 提示用户输入两个数字,并将其存储在变量
a和b中。 - 通过条件判断确保
a是较大的数字。 - 计算两个数字的乘积
n。 - 使用辗转相除法计算最大公约数。
- 最后输出最大公约数和最小公倍数。
- 关闭
Scanner以释放资源。
Js 实现
function calculateGCDAndLCM() {// 提示用户输入两个数字const a = parseInt(prompt("请输入第一个数字:"));const b = parseInt(prompt("请输入第二个数字:"));// 确保 a 是较大的数字let larger = Math.max(a, b);let smaller = Math.min(a, b);// 计算 a 和 b 的乘积const n = larger * smaller;// 使用辗转相除法计算最大公约数let r = larger % smaller;while (r !== 0) {larger = smaller;smaller = r;r = larger % smaller;}// 输出结果alert(`这两个数的最大公约数是 ${smaller},最小公倍数是 ${n / smaller}`);
}// 调用函数
calculateGCDAndLCM();
- 使用
prompt()函数获取用户输入,并将输入的字符串转换为整数。 - 使用
Math.max()和Math.min()确保larger是较大的数字,smaller是较小的数字。 - 计算两个数字的乘积
n。 - 使用辗转相除法计算最大公约数。
- 最后使用
alert()输出最大公约数和最小公倍数。
注意:
- 该代码在浏览器环境中运行,因为它使用了
prompt()和alert()函数来与用户交互。
相关文章:
最大公约数和最小公倍数-多语言
目录 C 语言实现 Python 实现 Java 实现 Js 实现 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析: 最小公倍数输入的两个数之积除于它们的最大公约数,关键是求出最大公约数; 求最大公约数用辗转…...
第三方数据库连接免费使用和安装
是强大的一体化数据库开发解决方案,可从单一应用程序无缝连接多个数据库,包括 MySQL、PostgreSQL、MongoDB、MariaDB、SQL Server、Oracle、SQLite 和 Redis。 下载:https://download.csdn.net/download/mo3408/90045937 升级特性 模型&…...
水库大坝安全监测之量水堰计应用
量水堰计是水库大坝安全监测系统中的一种关键设备,主要用于测量水库水位、流量等水力参数。以下是量水堰计在水库大坝安全监测中的应用及注意事项: 一、量水堰计的工作原理 量水堰计是一种专门用于测量水流流量的仪器,其工作原理主要基于水流…...
算法笔记:滑动窗口
前言 滑动窗口作为一个考点较高的算法,广泛应用于子串问题中,本文将进行详细讲解。 一、滑动窗口是什么 滑动窗口是双指针算法的一种,基本思路为维护一个窗口,然后从前往后遍历元素进行运算。 二、滑动窗口算法和其他双指针算…...
Ubuntu下的Graphviz的基础使用方法
一、Graphviz介绍 graphviz是贝尔实验室开发的一个开源的工具包,它使用一个特定的DSL(领域特定语言):dot作为脚本语言,然后使用布局引擎来解析此脚本,并完成自动布局 1、什么是Graphviz 官网地址,https://www.graphviz.org/ Gr…...
微积分复习笔记 Calculus Volume 1 - 6.8 Exponential Growth and Decay
6.8 Exponential Growth and Decay - Calculus Volume 1 | OpenStax...
React的ts文件中通过createElement拼接一段内容出来
比如接口返回一个值 const values [23.00, 40.00/kg];想做到如下效果, 如果单纯的用render渲染会很简单, 但是在ts文件中处理,所以采用了createElement拼接 代码如下: format: (values: string[]) > {if (!values || !val…...
Pinia之1:介绍Pinia、项目中引入Pinia
欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...
Python双向链表、循环链表、栈
一、双向链表 1.作用 双向链表也叫双面链表。 对于单向链表而言。只能通过头节点或者第一个节点出发,单向的访问后继节点,每个节点只能记录其后继节点的信息(位置),不能向前遍历。 所以引入双向链表,双…...
5G基础学习笔记
功能软件化 刚性网络:固定连接、固定功能、固化信令交互 柔性网络:网元拆解成服务模块,基于API接口调用 服务化架构(SBA) Service based Architecture (SBA): 借鉴了业界成熟的SOA、微服务架…...
Python plotly库介绍
一、引言 在数据可视化领域,Python提供了众多强大的库。其中,plotly是一个功能强大、交互式的可视化库,可以创建各种类型的图表,包括线图、散点图、柱状图、饼图、3D图表等。它不仅提供了美观的可视化效果,还支持交互式…...
go编程中yaml的inline应用
下列代码,设计 Config 和 MyConfig 是为可扩展 Config,同时 Config 作为公共部分可保持变化。采用了匿名的内嵌结构体,但又不希望 yaml 结果多出一层。如果 MyConfig 中的 Config 没有使用“yaml:",inline"”修饰,则读取…...
手机实时提取SIM卡打电话的信令声音-智能拨号器的双SIM卡切换方案
手机实时提取SIM卡打电话的信令声音 --智能拨号器app的双SIM卡切换方案 一、前言 在蓝牙电话的方案中,由于采用市场上的存量手机来做为通讯呼叫的载体,而现在市面上大部分的手机都是“双卡双待单通”手机,简称双卡双待手机。即在手机开机后…...
探索Python WebSocket新境界:picows库揭秘
文章目录 探索Python WebSocket新境界:picows库揭秘第一部分:背景介绍第二部分:picows库概述第三部分:安装picows库第四部分:简单库函数使用方法第五部分:场景应用第六部分:常见Bug及解决方案第…...
2024年11月24日Github流行趋势
项目名称:FreeCAD 项目维护者:wwmayer, yorikvanhavre, berndhahnebach, chennes, WandererFan等项目介绍:FreeCAD是一个免费且开源的多平台3D参数化建模工具。项目star数:20,875项目fork数:4,117 项目名称࿱…...
NewStar CTF week5 Crypto wp
easy_ecc ecc的模板题,稍加推理就会发现c1mc2*k因此做一个减法就行,需要注意的点是c1,c2必须放到ecc里面过一道才能出正确结果 k 86388708736702446338970388622357740462258632504448854088010402300997950626097 p 644088904089909773124499208053…...
vue3+antd注册全局v-loading指令
文章目录 1. 创建指令文件2. 全局注册3. 使用 1. 创建指令文件 src/directives 在directives中创建如下文件 src│─directives│ index.ts└─loadingindex.tsindex.vuedirectives/ index.ts export * from ./loadingdirectives/loading/index.ts import { createApp } f…...
初试无监督学习 - K均值聚类算法
文章目录 1. K均值聚类算法概述2. k均值聚类算法演示2.1 准备工作2.2 生成聚类用的样本数据集2.3 初始化KMeans模型对象,并指定类别数量2.4 用样本数据训练模型2.5 用训练好的模型生成预测结果2.6 输出预测结果2.7 可视化预测结果 3. 实战小结 1. K均值聚类算法概述…...
捉虫笔记(七)-再探谁把系统卡住了
捉虫笔记(七)-再探谁把系统卡住 1、内核调试 在实体物理机上,内核调试的第一个门槛就是如何建立调试链接。 这里我选择的建立网络连接进行内核调试。 至于如何建立网络连接后续文章再和大家分享。 2、如何分析 在上一篇文章中,我们…...
【Linux课程学习】:《简易版shell实现和原理》 《哪些命令可以让子进程执行,哪些命令让shell执行(内键命令)?为什么?》
🎁个人主页:我们的五年 🔍系列专栏:Linux课程学习 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 打印命令行提示符(PrintCommandLin…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
