C/C++ 辗转相除与更相减损求最大公约数公倍数

news2024/11/25 16:02:40

古人有两种求最大公约数的方法
最小公倍数 = (a * b) / 最大公约数

1.辗转相除(欧几里得-《几何原本》)

在这里插入图片描述

我认为辗转相除的的稳定性要强过更相减损,因为减法在数差距较大时效率会较低。
辗转相除注意考虑0的问题,0作为除数会出错。
假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法,是这样进行的:

1997 ÷ 615 = 3 (余 152)
615 ÷ 152 = 4(余7)
152 ÷ 7 = 21(余5)
7 ÷ 5 = 1 (余2)
5 ÷ 2 = 2 (余1)
2 ÷ 1 = 2 (余0)

至此,最大公约数为1

int main()
{
	int a, b;
	scanf("%d%d", &a, &b);
	
	int muti, div;
	//暂存积求最小公倍
	muti = a * b;

	//避免出现小除大提前进行交换,保证a>=b
	if (a < b)
	{
		a ^= b;
		b ^= a;
		a ^= b;
	}

	//防止除数是0
	if(b==0) 
	{
		muti = 0;
		div = 0;
		return 0;
	}
	
	
	//辗转相除
	while (1)
	{
		a = a % b;
		if (!a) { div = b; break; }
		b = b % a;
		if (!b) { div = a; break; }
	}
	
	muti =  muti / div ;

	printf("%d %d", div, muti);
	return 0;
}

2.更相减损(孙子-《孙子算经》)

原理相似,不再给出代码参考
解:由于63不是偶数,把98和63以大数减小数,并辗转相减:
在这里插入图片描述

98-63=35
63-35=28
35-28=7
28-7=21
21-7=14
14-7=7

所以,98和63的最大公约数等于7。

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

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

相关文章

AIGC全新升级!Share Creators现已提供更加强大的AIGC功能及体验!

AIGC全称AI Generated Content,即人工智能生产的内容,被认为是继PGC、UGC之后的新型内容创作方式。在技术上&#xff0c;AIGC能够以优于人类的制造能力和知识水平承担信息挖掘、素材调用、复刻编辑等基础性机械劳动&#xff0c;从技术层面实现以低边际成本、高效率的方式满足海…

科技云报道:成立11年,青云的变与不变

科技云报道原创。 成立于2012年的青云科技&#xff0c;迎来了自己的11周年。 对于高速发展的云计算行业来说&#xff0c;“十年”这一节点更是承载了太多的命题。 过去11年&#xff0c;青云在云计算巨头和IT大厂的环伺之下一路拼杀&#xff0c;终以“混合云第一股”的身份登上…

Rancher 系列文章-RHEL7.8 离线有代理条件下安装单节点 Rancher

一 基础信息 1.1 前提 本次安装的为 20220129 最新版&#xff1a;Rancher v2.6.3VM 版本为 RHEL 7.8, 7.9 或 8.2, 8.3, 8.4(Rancher 官网要求&#xff09;VM YUM 仓库&#xff1a;已配置对应版本的 RHEL 和 EPEL YUM 仓库VM 提供 root 权限已配置 ntp&#xff08;防止因为时…

Microsoft Edge 浏览器的怎么传文件

可以替代微信的文件传输助手&#xff0c;不再需要每次传输文件时登录微信&#xff0c;在手机和电脑上点击”Drop”即可。

如何备份与恢复MySQL数据库数据

目录 一、MySQL备份 备份方式 完全备份 差异备份 增量备份 二、常见的备份方法 物理冷备 专用备份工具 mysqldump 或 mysqlhotcopy 启用二进制日志进行增量备份 第三方工具备份 三、MySQL完全备份 四、数据库完全备份分类 物理冷备份与恢复 mysqldump备份与恢复 …

海外应用商店的ASO优化表现跟踪

花更少的时间整合App Store数据&#xff0c;花更多的时间去解锁有助于我们实现高下载量的目标。了解我们应用商店表现的真实水平&#xff0c;以便我们可以自信地完善和调整应用营销策略。 全面跟踪所有重要的应用指标&#xff0c;踪各个国家/地区的展示次数、商店浏览量、安装…

小程序web-view本地测试:redirect_uri参数错误

要检查这些地方&#xff0c; 1&#xff1a; 2&#xff1a; 3&#xff1a;这里要加http、https this.testURL https://open.weixin.qq.com/connect/oauth2/authorize?appidwx54d162c2a94191f1&redirect_uri${encodeURIComponent(http://xxxxx)}&response_typecode&a…

Slim-neck by GSConv 论文学习

1. 解决了什么问题&#xff1f; 目标检测是计算机视觉中一个重要任务。在边缘设备上&#xff0c;大模型很难取得实时的效果。而使用大量深度可分离卷积的模型则很难取得高准确率。如下图&#xff0c;深度可分离卷积的缺点就是&#xff1a;输入图像的通道信息在计算时被分隔开了…

RocketMQ 5.0本地源码启动3Nameserve+2broker集群

这里是weihubeats,觉得文章不错可以关注公众号小奏技术&#xff0c;文章首发。拒绝营销号&#xff0c;拒绝标题党 背景 由于RocketMQ 5.x主从同步的方式改动非常大&#xff0c;集群部署的方式也改动很大&#xff0c;所以打算本地启动一个小集群&#xff0c;进行debug研究源码学…

PCB反复评审难题,终极解决办法有了?

随着电子产品的高速发展&#xff0c;PCB生产中大量使用BGA、QFP、PGA和CSP等高集成度器件&#xff0c;PCB的复杂程度也大大增加&#xff0c;随之而来的PCB的设计和制造难、测试困难、焊接不良、器件不匹配和维修困难等生产问题&#xff0c;导致整个产品工期延误&#xff0c;产品…

整合 JXLS模版导出excel表格

1、引入 包 - <!--easypoi --> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId> <version>3.3.0</version> <…

Day57|647. 回文子串 、516.最长回文子序列

647. 回文子串 1.题目&#xff1a; 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串&#xff0c;即使是…

学生宿舍智能电表限电原理

学生宿舍智能电表限电石家庄光大远通电气有限公司生产销售系列学生公寓智能管理模块、学生公寓智能控电水电联控系统及相关公寓安全用电产品&#xff0c;产品销往全国各地&#xff0c;广泛应用于各种学校公寓物业及商业地产公司&#xff0c;为企事业单位物业管理提供便捷的水电…

性能优化:如何彻底解决SharedPreferences造成的卡顿

背景 在上线 ANR 监控平台后&#xff0c;线上收集到了较多的ANR日志 &#xff0c;从火焰图信息上看&#xff0c;函数阻塞在了QueuedWork 相关函数上 &#xff0c;本文主要介绍的这一现象的原因以及如何解决这一问题。 本文介绍的解决方案&#xff0c;已放到github 上https://g…

[Android] Android Studio 找不到一些包,编辑器显示红色

起因 此前写了一个项目里面用了 org.apache.commons.cli 这个库&#xff0c;在本地一段时间&#xff0c;因为其他业务影响就没有编写。今天突发奇想加点东西&#xff0c;发现—— 原本完好的项目&#xff0c;通过Android studio打开之后&#xff0c;org.apache.commons引入…

FPGA课程设计——数字电子时钟VERILOG(基于正点原子新起点开发板,支持8位或6位共阳极数码管显示时分秒毫秒,可校时,可设闹钟,闹钟开关,led指示)

2019 级 电子科学与技术 专业FPGA课程设计 报 告 2022 年 5 月 20 日 多功能数字电子钟的设计 摘要 电子设计自动化&#xff08;EDA&#xff09;是一种实现电子系统或电子产品自动化设计的技术&#xff0c;使用EDA技术设计的结果既可以用FPGA / CPLD来实施验证&#xff0c;…

k8s基础概念:port ,targetport,nodeport

在Kubernetes中&#xff0c;有三种类型的端口与Service相关&#xff1a;port、targetPort和NodePort。它们分别用于不同的用途&#xff1a; port&#xff1a;port字段定义了Service暴露给集群内部和外部的端口号。当你创建一个Service时&#xff0c;其他应用或服务可以通过该端…

配置右键点击文件夹通过IDEA打开项目

0、 前言 你是不是每次打开idea项目时&#xff0c;都需要走一遍这样的流程&#xff1a; 1、先启动idea 2、然后手动选择项目路径 3、打开项目 于是在打开项目的路上就耗费了大量的时间。 这篇文章会教你通过配置&#xff0c;让项目可以直接通过右键打开&#xff0c;大大提升项…

[新人向]MySQL和Navicat下载、安装及使用详细教程

MySQL和Navicat下载和安装及使用详细教程 因为这些软件的安装很多都是纯英文&#xff0c;作为新手安装真的需要摸索好久&#xff0c;包括我自己&#xff0c;所以Pipi酱就把自己的经验分享给大家~ MySQL的安装教程 一、下载安装包链接&#xff1a; 1.下载MySQL&#xff1a;ht…

aidl的学习(1)aidl中java.lang.RuntimeException: Didn‘t create service “XXX“

1、build中版本号为30及以上时&#xff0c;aidl无效&#xff0c;解决方案 ①在客户端的manifest.xml中添加一下代码&#xff0c;其中代码中的包名为服务端的包名 <manifest> ... <application> ....</application> <queries ><package android:na…