C语言小游戏——3、寻找大公约和小公倍的多种求法

目录

一、最大公约数有四种求解:

法 一:暴力求解

法 二:更相减损法

法 三:辗转相除法

二、最小公倍数有两种求解:

法 一:暴力求解

法 二:公式法


一、最大公约数有四种求解:

什么是最大公约数呢?定义如下:
如果数 a 能被数 b 整除,a 就叫做 b 的倍数,b 就叫做 a 的约数几个整数中公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数

例:12、18的公约数有1、2、3、6,其中最大的一个是6,则6是12与18的最大公约数。

法 一:暴力求解

从上面举的例子我们可以分析,最大公约数一定不会大于两个数之间的最小数,最大也就是两个数的最小值,如20、40的最大公约数是20。

思路:

所以我们可以令两个数的最小值为最大公约数,然后我们再用两个数分别除去这两个数的最小值,如果都能整除,则就是最大公约数,否则就自减 1 再去除,判断是否能整除,不能就再自减1,一直循环下去直到找到都能被整除的数。(最坏的情况就是找到1停止)

比如上面的12、18这俩个数,这两个数的最小值是12,则定义变量tmp=12,然后判断12、18是否都能整除变量tmp。
tmp=12,不能被整除,自减1
tmp=11,不能被整除,自减1
tmp=10,不能被整除,自减1
tmp=9,不能被整除,自减1
tmp=8,不能被整除,自减1
········
tmp=6,都能被12、18整除
所以找到最大公约数了,12,18的最大公约数是6。

代码实现:

int main()
{int a = 0, b = 0;printf("请输入数字:");scanf("%d %d", &a, &b);int tmp = a < b ? a : b;//把两个数的最小值赋给tmp{while (1){if (a % tmp == 0 && b % tmp == 0){break;//找到最大公约数了,跳出循环}tmp--;//两个数都不能整除,自减1}printf("最大公约数为:%d", tmp);}return 0;
}

法 二:更相减损法

更相减损法:也叫更相减损术,是出自《九章算术》的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合。

思路:
以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到它们两个数相等为止。则相等的两个数就是所求的最大公约数。

代码实现:

int main()
{int x = 0, y = 0;printf("请输入两个数字:");scanf("%d%d",&x,&y);while (x != y)  //两个数不相等就一直循环{if (x > y){x = x - y;}else if (x < y){y = y - x;}}//到这里则是两个数相等,取其任何一个就是最大公约数printf("最大公约数是:%d\n", x);return 0;
}

法 三:辗转相除法

思路:用辗转相除法求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数。

代码实现:以三个数为例

int main(){int x = 0, y = 0, z = 0;int tmp = 0;// 输入三个整数printf("请输入三个数字:");scanf("%d %d %d", &x, &y, &z);// 计算第一个数和第二个数的最大公约数while (y != 0) {tmp = x % y;x = y;y = tmp;}// 计算得到的最大公约数与第三个数的最大公约数作比较while (z != 0) {tmp = x % z;x = z;z = tmp;}// 输出结果printf("三个数的最大公约数是:%d\n", x);return 0;
}

二、最小公倍数有两种求解:

几个数共有的倍数叫做这几个数的公倍数,其中除0以外最小的一个公倍数,叫做这几个数的最小公倍数。

举几个例子:12、18的最小公倍数是36
 

法 一:暴力求解

通过上面举的例子我们可以发现 最小公倍数一定大于或等于两个数的最大值。

思路:所以我们可以先找出两个数的最大值,然后赋值给变量tmp,然后用变量tmp分别除去两个数,如果能整除,则就是最小公倍数,否则变量tmp自加1,再分别除去两个数,判断是否能整除,一直循环下去,直到变量tmp都能够整除两个数。

比如12、18这两个数,这两个数的最大值是18,则定义变量tmp=18,然后判断变量tmp是否都能整除12、18。
tmp=18,不能整除12、18,自加1
tmp=19,不能整除12、18,自加1
tmp=20,不能整除12、18,自加1
tmp=21,不能整除12、18,自加1
tmp=22,不能整除12、18,自加1
········
tmp=36,都能整除12、18
所以找到最小公倍数了,12,18的最小公倍数是36。

代码实现

int main()
{int a = 0, b = 0;printf("请输入两个数字:");scanf("%d %d", &a, &b);int tmp = a > b ? a : b;while (1){if (tmp % a == 0 && tmp % b == 0){break;}tmp++;}printf("最小公倍数:%d", tmp);return 0;
}

法 二:公式法

由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。
所以,求两个数的最小公倍数,就可以先求出它们的最大公约数,然后用两个数的积除去最大公约数得出它们的最小公倍数
因此我们可以利用上面任何一种求最大公约数的方法来实现,先求最大公约数然后再求最小公倍数。

int Fun(int x, int y)
{if (x > y){return Fun(y, x - y);  //再开辟一个Fun函数}else if (x < y){return Fun(x, y - x);   //再开辟一个Fun函数}else   //找到相减到相等{return x;}
}
int main()
{int x = 0, y = 0;printf("请输入两个数字:");scanf("%d%d", &x, &y);int ret = Fun(x, y);printf("最大公约数是:%d\n", ret);printf("最小公倍数是:%d\n", x * y / ret);  //利用公式法,直接求出return 0;
}

淦碗鸡汤!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/642226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第九站(17天):C++IO流

文件IO流 对象:文件,控制台,特定数据类型stringstream (写数据输出流out,读数据输入流in) ofstream : ofstream outfile;//输出流:从键盘输出数据,写入到文件 //文件打开默认位ios::out//字节覆盖写 //可以截断设置为:ios::out | ios::trunc//将之前文件全部…

关于网络模型的笔记

1. OSI 七层参考模型&#xff1a; 简介&#xff1a; 七层模型&#xff0c;亦称 OSI&#xff08;Open System Interconnection&#xff09;参考模型&#xff0c;即开放式系统互联。参考模型 是国际标准化组织&#xff08;ISO&#xff09;制定的一个用于计算机或通信系统间互联…

DolphinScheduler-3.2.0集群部署教程

本文目录 1.集群部署方案(2 Master 3 Worker)2.前置准备工作3.端口说明4.DS集群部署1.时间同步2.配置用户、权限3.配置集群免密登陆4.ZK集群启动5.初始化数据库1.创建数据库、用户、授权2.解压缩安装包3.添加MySQL驱动至libs目录 6.配置文件修改1.dolphinscheduler_env.sh 配置…

基于YOLOv5、v7、v8的竹签计数系统的设计与实现

文章目录 前言效果演示一、实现思路① 算法原理② 程序流程图 二、系统设计与实现三、模型评估与优化① Yolov5② Yolov7③Yolov8 四、模型对比 前言 该系统是一个综合型的应用&#xff0c;基于PyTorch框架的YOLOv5、YOLOv7和YOLOv8&#xff0c;结合了Django后端和Vue3前端&am…

【PyTorch】记一次卷积神经网络优化过程

记一次卷积神经网络优化过程 前言 在深度学习的世界中&#xff0c;图像分类任务是一个经典的问题&#xff0c;它涉及到识别给定图像中的对象类别。CIFAR-10数据集是一个常用的基准数据集&#xff0c;包含了10个类别的60000张32x32彩色图像。在上一篇博客中&#xff0c;我们已…

盖子的c++小课堂:第二十六讲:双向链表

前言 谢谢各位粉丝的支持,望我早日突破1000粉 双向链表 干货!单链表从原理到实现——附python和C++两个版本 - 知乎单链表是链表家族中的一员,每个节点依旧由 数据域(data)和指针域(next)组成,链表的具体概念下面有介绍: 机器学习入坑者:程序员基本功——链表的基…

消息队列RabbitMQ.01.安装部署与基本使用

目录 RabbitMQ的作用 Message queue 释义 问题思考 存在的问题 优化方案 案例分析 带来的好处 消息队列特点 Email邮件案例分析 Docker安装部署RabbitMQ 1.下拉镜像 2.运行RabbitMQ 3.打开防火墙端口号并重新运行防火墙 4.容器启动后,可以通过 docker logs 容器 查…

如何使用宝塔面板搭建Discuz论坛服务并结合内网穿透远程访问

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board&#xff08;以下简称 Discuz!&#xff09;是一套通用的社区论坛软件系统&#xff0c;用户可以在不需要任何编程的基础上&a…

k8s基础知识

理解docker [二] - namespace - 知乎 Kubernetes Controller 机制详解&#xff08;一&#xff09;-赵化冰的博客 | Zhaohuabing Blog K8S之自定义Controller - 知乎 Controller - K8S - 知乎 https://coolshell.cn/articles/17010.html/comment-page-2#comment-2133157 ht…

(三) MySQL字符集

MySQL字符集包括 基字符集&#xff08;CHARACTER&#xff09;与校对规则&#xff08;COLLATION&#xff09;这两个概念&#xff1a; latin1支持西欧字符、希腊字符等gbk支持中文简体字符big5支持中文繁体字符utf8几乎支持世界所有国家的字符utf8mb4是真正意义上的utf-8 查看当…

Git学习笔记(第6章):GitHub操作(远程库操作)

目录 6.1 远程库操作 6.1.1 创建远程库 6.1.2 命名远程库 6.1.3 本地库推送到远程库(push) 6.1.4 远程库拉取到本地库(pull) 6.1.5 远程库克隆到本地库(clone) 6.2 团队内协作 6.3 跨团队协作 6.4 SSH免密登录 6.1 远程库操作 命令 作用 git remote -v 查看所有远程…

【EISCOPUS双检索】2024电子、通信与智能科学国际会议(ECIS 2024)征稿通知!

2024年5月24日-27日 中国|长沙 会议重要日期 一轮截稿时间&#xff1a;2024年3月10日 录用通知时间&#xff1a;投稿后7-15天 注册截止时间&#xff1a;2024年5月10日 一、大会背景 随着互联网的不断创新&#xff0c;电子、通信和智能科学已经广泛应用于各个领域。为了为…

智慧博物馆信息化系统建设(1)

博物馆RFID藏品管理系统 博物馆藏品保管是一项十分复杂又繁琐的工作。从事保管工作除了经常、及时地进行藏品的登记、分类、编目、保养和修复等一系列工作外,还需要把有关藏品的信息迅速、正确地提供给利用者。要提高保管工作的效率,达到现代化的科学管理,从发展趋势看,进…

街机模拟游戏逆向工程(HACKROM)教程:[19]思路的多样性

在上一章,我们找到了检测敌人出现条件的地方,并测试成功,但是找到这个位置的思路并不只有这个方法,这里我们提供另一个思路。 我们已经知道,敌人出现需要一个条件,当这个条件满足时,敌人的出现,程序会需要初始化这个敌人出现的位置,也就是说,我们可以利用敌人的坐标…

教你三个方法去除图片上的涂鸦快收藏起来吧

在数字时代&#xff0c;我们经常需要在图片上进行各种编辑和修改&#xff0c;以使其符合我们的需求。然而&#xff0c;有时候我们会遇到一些图片上的涂鸦&#xff0c;这些涂鸦不仅影响了图片的美观度&#xff0c;还破坏了图片的整体效果。那么图片上的涂鸦怎么去掉&#xff0c;…

怎么移除WordPress后台工具栏“新建”菜单?如何添加“新建文章”菜单?

默认情况下&#xff0c;WordPress后台顶部管理工具栏有左侧有一个“新建”菜单&#xff0c;而且还有下拉菜单文章、媒体、链接、页面和用户等&#xff0c;不过我们平时用得最多的就是“新建文章”&#xff0c;虽然可以直接点击“新建”&#xff0c;或点击“新建 – 文章”&…

docker安装Rabbitmq教程(详细图文)

目录 1.下载Rabbitmq的镜像 2.创建并运行rabbitmq容器 3.启动web客户端 4.访问rabbitmq的微博客户端 5.遇到的问题 问题描述&#xff1a;在rabbitmq的web客户端发现界面会弹出如下提示框Stats in management UI are disabled on this node 解决方法 &#xff08;1&#…

赠书活动~

关注公众号获得&#xff0c;发送抽奖

JSON简单了解

文章目录 1、JSON介绍2、ES6模版字符串3、JS对象转化为JSON字符串3.1、手动JS对象转化为JSON字符串3.2、自动JS对象转化为JSON字符串 4、JS对象和java互相转换 1、JSON介绍 JSON 概念&#xff1a;JavaScript Object Notation。JavaScript 对象表示法&#xff0c;简单理解JSON是…

AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(九)

26.搭建开发环境 开发环境 | webpack 中文文档 (docschina.org) 之前运行时出现的警告和mode配置有关 目标11&#xff1a;配置开发服务器环境 webpack-dev-server 11.1 下载 webpack-dev-server 软件包到当前项目 11.2 设置打包的模式为开发模式&#xff0c;配置自定义命令 11…