【数据结构与算法】JS 求最大公约数

刷爆GitHub!1100+ commits打造的JavaScript算法宝库,一文吃透! 在前端开发的学习与实践中,算法和数据结构堪称基石,对开发者提升编程能力、优化代码性能意义非凡。这个项目凭借丰富的内容和清晰的讲解,成为众多开发者探索算法世界的得力助手,在GitHub上收获了超高人气。 阅读详情

面试被问到了,太菜了,不会写,特来学习记录下。

辗转相除法

辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。
例如,求(319,377):
∵ 319÷377=0(余319)
∴(319,377)=(377,319);
∵ 377÷319=1(余58)
∴(377,319)=(319,58);
∵ 319÷58=5(余29)
∴ (319,58)=(58,29);
∵ 58÷29=2(余0)
∴ (58,29)= 29;
∴ (319,377)=29。

代码如下:

function fun(a, b) {
  if (a % b === 0) {
    return b
  }
  return fun(b, a % b)
}
console.log(fun(319, 377)) // 29

更相减损法

也叫更相减损术,是出自《九章算术》的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合。
第一步:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。
第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。
则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。
其中所说的“等数”,就是最大公约数。求“等数”的办法是“更相减损”法。所以更相减损法也叫等值算法。
例1.用更相减损术求98与63的最大公约数。
解:由于63不是偶数,把98和63以大数减小数,并辗转相减:
98-63=35
63-35=28
35-28=7
28-7=21
21-7=14
14-7=7
所以,98和63的最大公约数等于7。
这个过程可以简单的写为:
(98,63)=(35,63)=(35,28)=(7,28)=(7,21)=(7,14)=(7,7)=7.
例2.用更相减损术求260和104的最大公约数。
解:由于260和104均为偶数,首先用2约简得到130和52,再用2约简得到65和26。
此时65是奇数而26不是奇数,故把65和26辗转相减:
65-26=39
39-26=13
26-13=13
所以,260与104的最大公约数等于13乘以第一步中约掉的两个2,即1322=52。
这个过程可以简单地写为:
(260,104)(/2/2) =>(65,26)=(39,26)=(13,26)=(13,13)=13. (22) => 52

代码如下,省去了判断双方都为偶数的部分,直接开始,类似上面的例1:

function fun(a, b) {
  if (a === b) {
    return b
  }
  if (a > b) {
    a = a - b
  } else {
    b = b - a
  }
  return fun(a, b)
}
console.log(fun(319, 377)) // 29
蓝牙协议栈详解(3)——BTstack BTstack是一个轻量级蓝牙协议栈,支持经典蓝牙(BR/EDR)和低功耗蓝牙(BLE)。它采用事件驱动模型,可运行在MCU/CPU上,通过HCI接口与蓝牙控制器通信。协议栈包含完整的蓝牙协议层支持,如L2CAP、RFCOMM、ATT/GATT等,并提供丰富的示例代码。 主要特点包括模块化设计、开源授权、支持多种HCI传输方式(UART/USB)和操作系统适配。开发时需要关注事件驱动编程模型、内存配置优化、HCI传输稳定性等问题。典型应用场景包括SPP串口通信、BLE外设开发等。 使用建议从最小示例开始,逐 阅读详情

相关推荐

cesium自定义指南针

项目需要一个指南针,用鼠标按住旋转指针,会让3d地图旋转,点击中心点重置方位。当然可以使用插件cesium-navigation-es6,但是样式不好修改,所以我自定义了一个指南针。

weixin_47017648的博客 750

JS求最大公约数

任务:求两个整数的最大公约数。 任务分析: 不妨设两个正整数a>b且a除以b商x余c;则a-bx=c,可以看出a,b的最大公约数也是c的约数(因为一个数能整除等式左边就一定能整除等式右边),则a,b的最大公约数与b,c的最大公约数相同。同样办法推出b,c的最大公约数等...

chumeng5676的博客 863

PyCharm配置及使用Git教程

平时习惯在Windows下开发,但是我们又需要实时将远方仓库的代码clone到本地,也需要将自己修改的代码push到远端服务器。

酒酿小圆子呀~ 4万+

【JavaScript 算法与数据结构】

README.md JavaScript 算法与数据结构 本仓库包含了多种基于 JavaScript 的算法与数据结构。 每种算法和数据结构都有自己的 README 并提供相关说明以及进一步阅读和 YouTube 视频。 数据结构 数据结构是在计算机中组织和存储数据的一种特殊方式,它可以高效地访问和修改数据。更确切地说,数据结构是数据值的集合,它们之间的关系、函数或操作可以应用于数据...

weixin_44829998的博客 411

GD32的低功耗模式:睡眠、深度睡眠与待机模式

GD32F4xx提供三种主要低功耗模式,功耗逐级降低:睡眠模式 (Sleep Mode)关闭CPU时钟,保持外设运行任意中断/事件唤醒深度睡眠模式 (DeepSleep Mode)关闭CPU和大部分外设时钟需特定唤醒源(外部中断、RTC等)待机模式 (Standby Mode)最低功耗,仅备份域维持供电仅支持复位、RTC、WKUP引脚唤醒。

波风水门的博客 2276

uniapp原生安卓插件开发之路

声明: 我的功能需求:全局悬浮框,也就是在其他应用上依旧能悬浮。查遍uni文档,无法实现,甚至native.js也无法实现,无奈只能走上原生插件开发这条不归路了。(吐槽:天天写前端js,突然写了下android简直要炸,public static String啥的,var不香嘛,不过别人严谨肯定还是有别人道理的,加油吧,争取能入个门!) 本人不懂安卓开发,完全安卓小白,所以安卓方面可能表达的不是很好,安卓代码可能写的不优美,但我功能最终还是实现了。但是为了需求,能力总能被“逼”出来。有描述错误的还望指正

Jone's Area 1万+

js题目:利用递归求两个数字的最大公约数

js题目:利用递归求两个数字的最大公约数 首先确定如何求最大公约数,例如 24,78,算法如下: 78%24=6 大数对小数取余 24%6=0 小数对上次的余数再取余,重复这个过程,直到余数为0。余数为0时,此时用来取余的小数(这里是6)就是最大公约数 <script> function fn(m,n){ if(m>n){ var max=m; ...

grit_s的博客 2150

用Python玩转ROS机械臂:YOLO目标检测+MoveIt!自动抓取仿真教程

本文详细介绍了如何利用Python集成YOLO目标检测与ROS的MoveIt!运动规划库,实现机械臂的智能抓取仿真。通过Gazebo仿真环境,从视觉感知、坐标转换到运动规划与执行,构建了一套完整的自动化抓取系统,为机器人视觉抓取应用提供了可复现的实践方案。

ppp33的博客 552

最佳(optimal)置换算法_JavaScript 算法与数据结构

更多精彩,请点击上方蓝字关注我们!README.mdJavaScript 算法与数据结构本仓库包含了多种基于 JavaScript 的算法与数据结构。每种算法和数据结构都有自己的 README 并提供相关说明以及进一步阅读和 YouTube 视频。数据结构数据结构是在计算机中组织和存储数据的一种特殊方式,它可以高效地访问和修改数据。更确切地说,数据结构是数据值的集合,它们之间的关系、函数...

weixin_39983563的博客 727

Spring AI 实战(11):收官!10 道面试高频题 + 一张脑图带走全系列

本文是Spring AI系列的收官篇,通过知识脑图梳理前10篇内容,提供面试高频题和避坑清单。主要内容包括: 知识脑图:分6层(核心抽象、输入增强、输出控制等)总结Spring AI全栈技术。 10道高频面试题:涵盖ChatClient/ChatModel关系、结构化输出、RAG链路等核心知识点。 避坑清单:列出9条常见问题及解决方案,如向量维度匹配、Advisor顺序等。 技术对比:分析Spring AI、LangChain4j和Spring AI Alibaba的差异与适用场景。 使用建议:提供面试复习

不才不才不不才的博客 295

有效Dk值提取方法的仿真分析

通过本文的仿真对比分析,提取有效Dk值方面,TDR技术在一些固定的场景下,依然有其参考应用价值,而随着VNA功能的不断增强和高精度测量手段的不断更新,双端口Delta-L技术才是主流评估方法,而单端口Delta-L技术则可以作为其降本增效的方案补充。

一只豌豆象的博客 1823

JavaScript-求一个数组中所有数的最大公约数

JavaScript-求一个数组中所有数的最大公约数,如果为1,返回false,否则返回true let arr = [2,2,3,4,5,5,6] // 定义数组 const gcd = (x, y) => { return x == 0?y:gcd(y%x, y); //返回两数之间最大公约数 } let temp = [...new Set(arr)]; // 对数组去重,减少...

weixin_41656025的博客 2004

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

前端Javascript数据结构与算法常见题目(二 **简单level**)

JS数据结构与算法常考内容主要包括常见数据结构的理解和应用,如数组、链表、栈、队列、哈希表、树(特别是二叉树和二叉搜索树)和图等,以及基本的排序算法(如冒泡排序、选择排序、插入排序、归并排序、快速排序等)和查找算法(如二分查找)。此外,还可能涉及算法的效率分析、时间复杂度和空间复杂度的计算,以及特定问题的算法设计,如贪心算法、动态规划等在JS中的实现。这些内容在前端面试和开发中都是非常重要的基础知识。

警警的博客 1207

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【GitHub项目推荐--JavaScript Algorithms:JavaScript算法与数据结构完全指南】

​​ 是由trekhleb开发的开源项目,包含了基于JavaScript实现的众多流行算法和数据结构。每个算法和数据结构都有独立的README文档,包含相关解释和进一步阅读的链接(包括YouTube视频链接)。该项目旨在用于学习和研究目的,不适合生产环境使用。🔗 ​GitHub地址🚀 ​核心价值​:算法学习 · 数据结构 · JavaScript实现 · 教育研究​项目背景​:​学习需求​:响应开发者对算法和数据结构学习的需求​JavaScript生态​:丰富JavaScript开发生态系统​。

j8267643的博客 758

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

求两个数的最大公约数——欧几里得算法

问题 计算两个非负整数p和q的最大公约数 算法思想 若q是0,则最大公约数为p 否则,将p除以q得到余数r p和q的最大公约数即为q和r的最大公约数 Java 源码 public class GCD { // 获取最大公约数 public static int gcd(int p, int q) { if (q == 0) ...

anmang6285的博客 349

JavaScript 算法与数据结构

数据结构 数据结构是在计算机中 组织和存储数 据的一种特殊方式, 它可以高效地 访问和修改 数据。更确切地说, 数据结构是数据值的集合, 它们之间的关系、函数或操作可以应用于数据。 B - 初学者, A - 进阶 B 链表 B 双向链表 B 队列 B 栈 B 哈希表 B 堆 B 优先队列 A 字典树 A 树 A 二叉查找树 A AVL 树 A 红黑树 A ...

weixin_45567983的博客 264

探索JavaScript中的算法之美 — algorithms.js

探索JavaScript中的算法之美 — algorithms.js 在这个日益数字化的世界里,高效而优雅的算法是解决问题的关键。为此,我们向您推荐一个令人惊叹的开源项目——algorithms.js。这个项目将经典的计算机科学算法和数据结构转化为JavaScript代码,为开发者提供了一种直观且实用的学习和应用工具。 项目介绍 algorithms.js 是一个精心编写的JavaScript库,...

gitblog_00060的博客 562

数组类算法题:卡牌分组(JS版本)

下面是卡牌分组题目,原题详见LeetCode卡牌分组 算法步骤: step1.统计重复卡牌的数量。 step2.利用递归求出两种卡牌的最大公约数。 step3.同理,求出所有卡牌的最大公约数。 step4.得到结果。若最终的最大公约数大于1,说明卡牌可以分组。 源代码card_combination.js: export default (arr)=>{ //step1.利用r...

qq_40511157的博客 1051

javascript求最大公约数

1 <!doctype html> 2 <head> 3 <meta charset = "utf-8" /> 4 </head> 5 6 <body> 7 <script> 8 /** 9 欧几里得算法求最大公约数 1...

weixin_30748995的博客 98

js求两个正整数的最小公倍数

//js求两个正整数的最小公倍数 function gbs(a, b){ let max = a; if(b > max){ max = b; } if(a==1 || b == 1){ console.log(a + "和" + b + "的最小公倍数是:" + max); return; } let find = 0; for(let i=1; i<=max; i++){

weixin_37744901的博客 1751

JavaScript 算法和数据结构

用 JavaScript 实现的算法和数据结构,带有解释和进一步阅读的链接

a1014981613的博客 115

【笔记】JavaScript版数据结构与算法——基础算法之“数组类”(914. 卡牌分组)

914. 卡牌分组

程序边界 679

python辗转相除法最大公约数和最小公倍数_五十六、从高中碾转相除法、更相减损术算法谈起...

「@Author:Runsen」❝ 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题代码化。 「---- Runsen」 ❞先问你们一个小学问题:「如何求两个整数的最大公约数?」曾经见过不少的算法题,发现有的并不在数据结构和算法大纲中,而是来源于高中数学。高中数学在必修三中,有一个非常重要的知识点,叫做「碾转相除法、更相减损术」。辗转相除法, 又名欧几里德算法(Euclidean ...

weixin_39589923的博客 656

递归解决求最大公约数问题

&lt;!doctype html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Document&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;script&amp

weixin_40098371的博客 564
上一篇: 【JavaScript】null和 undefined 的区别是什么?
下一篇: 【JavaScript】数组对象重排序方法 sort
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值