快速加入

只要做上本站的友情链接,并在您站上点击一次,就免人工自动收录!并自动排在本站第一位。

本站已收录17036个网站。
加入时间:

2019-07-11 12:26:59

站点标题:

False-JavaScript-第二电脑网

http://www.002pc.com/javascript/607.html

关键词:

公倍数,JavaScript,最大公约数,迭代,面向对象,详解

页面描述:

本文实例讲述了JavaScript求一组数的最小公倍数和最大公约数常用算法。分享给大家供大家参考,具体如下:W WW.002PC .COM认为此文章对《JavaScript求一组数的最小公倍数和最大

蜘蛛模拟抓取:

False-JavaScript-第二电脑网学习电脑,计算机系统故障维护,电脑技术,电脑知识学习-就上第二电脑网网站首页电脑知识操作系统办公软件网络安全网络编程网站制作数据库CMS教程更多服务器网站运营网络营销JavaScriptpythongo语言PHP编程AJAX相关正则表达式ASP.NETASP编程JSP编程当前位置:首页>网络编程>JavaScriptFalse更新时间:2019-07-0314:43:45作者:第二电脑网我要评论本文实例讲述了JavaScript求一组数的最小公倍数和最大公约数常用算法。分享给大家供大家参考,具体如下:WWW.002PC.COM认为此文章对《JavaScript求一组数的最小公倍数和最大本文实例讲述了JavaScript求一组数的最小公倍数和最大公约数常用算法。分享给大家供大家参考,具体如下:WWW.002PC.COM认为此文章对《javascript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】》说的很在理。方法来自求多个数最小公倍数的一种变换算法(详见附录说明)最小公倍数的算法由最大公约数转化而来。最大公约数可通过如下步骤求得:(1)找到a1,a2,..,an中的最小非零项aj,若有多个最小非零项则任取一个(2)aj以外的所有其他非0项ak用akmodaj代替;若没有除aj以外的其他非0项,则转到(4)(3)转到(1)(4)a1,a2,..,an的最大公约数为aj写了两个版本的javascript求公倍数和公约数,主要偏重于算法,没有太注意命名,很多就直接写的单字母名称。0.简单易懂的循环functiongetMin(arr){varmin=Infinityarr.forEach(function(item){if(itemminitem!=0){min=item}})returnmin}functionhowMuchZero(arr){varzerocount=0arr.forEach(function(item){item===0?zerocount:zerocount})if(zerocount===arr.length-1){returntrue}elsereturnfalse}functionmaxDivi(arr){do{varmin=getMin(arr)arr=arr.map((item)=item===min?item:item%min)}while(!howMuchZero(arr))returngetMin(arr)}functionminMulti(arr){vartotalMulti=arr.reduce((pre,item)=pre=pre*item)varbrr=arr.map((item)=totalMulti/item)varbrr_maxDivi=maxDivi(brr)returntotalMulti/brr_maxDivi}1.function套functionvararr_minMulti,arr_maxdivifunctionminMulti(arr){vartotalmulti=arr.reduce((multi,curvalue)=multi*curvalue)if(totalmulti===0){arr_minMulti=0return}varmarr=arr.map((item)=totalmulti/item)maxDivisor(marr)arr_minMulti=totalmulti/arr_maxdivi}functionmaxDivisor(arr){varmin=getMin(arr)if(min===Infinity){arr_maxdivi=minreturn}varexparr=arr.filter(function(item){return(item!==minitem!==0)})if(exparr.length===0){arr_maxdivi=minreturn;}else{varmodearr=arr.map(function(item){return(item===min||item===0)?item:item%min})console.log(modearr,'modearr')maxDivisor(modearr)}}functiongetMin(arr){varmin=Infinityarr.forEach(function(item){if(itemitemmin){min=item}})returnmin}arr=[13,20,10,26]minMulti(arr)console.log('最小公倍数',arr_minMulti)2.objectoriented面向对象functionmaxDivisor(arr,origin){this.arr=arrthis.min=this._getMin(arr)this.maxDivisor=this._getMaxDiv()if(origin){this.minMulti=this._getMinMulti()}}maxDivisor.prototype._getMin=function(arr){varmin=Infinityarr.forEach(item=min=(itemitemmin)?item:min)returnmin}maxDivisor.prototype._getMaxDiv=function(){vararr_maxdivivarself=this,arr=this.arrfunctionmaxDivisor(arr){//console.log(self._getMin)varmin=self._getMin.call(null,arr)console.log(min,'min')if(min===Infinity){arr_maxdivi=0return;}varexparr=arr.filter(item=(item!==minitem!=0))if(exparr.length===0){arr_maxdivi=minreturn;}else{varmodearr=arr.map(item=(item===min||item===0)?item:item%min)maxDivisor(modearr)}}maxDivisor(this.arr)returnarr_maxdivi}maxDivisor.prototype._getMinMulti=function(){vararr=this.arr,arr_minMultivartotalmulti=arr.reduce((multi,curvalue)=multi*curvalue)if(totalmulti===0){return0}else{varmarr=arr.map((item)=totalmulti/item),b=newmaxDivisor(marr,false)arr_minMulti=totalmulti/b.maxDivisorreturnarr_minMulti}}vara=newmaxDivisor([12,9,6],true)console.log(a)附录:求多个数最小公倍数的一种变换算法原理分析令[a1,a2,..,an]表示a1,a2,..,an的最小公倍数,(a1,a2,..,an)表示a1,a2,..,an的最大公约数,其中a1,a2,..,an为非负整数。对于两个数a,b,有[a,b]=ab/(a,b),因此两个数最小公倍数可以用其最大公约数计算。但对于多个数,并没有[a1,a2,..,an]=M/(a1,a2,..,an)成立,M为a1,a2,..,an的乘积。例如:[2,3,4]并不等于24/(2,3,4)。即两个数的最大公约数和最小公倍数之间的关系不能简单扩展为n个数的情况。你可能感兴趣的JavaScriptwindows和linux共享盘Linux下的《windows和linux共享盘Linux下的字符串截取详解》总结了关于程序员教程,对于我们来第FalsePHP函数篇详解十进制、二进一,十进制(decimalsystem)转换函数说明1,十进制转二进制decbin()函数,如下实例echodelinux文件后缀nginx服务器accessnginx的log日志分为accesslog和errorlog其中accesslog记录了哪些用户,哪些页面以pythonfilecmp详解python切片本篇将介绍Python的切片操作,切片支持的数据类型有列表、字符串、元祖,更多内容请参考:Pu盘里面装linux系统linux系统BASBASHshellset命令详解用set命令可以设置各种shell选项或者列出shelldownphp详解WordPress中简码格WordPress简码是一种类似于论坛标签的东西,格式类似于把尖括号换成中括号的Html标签php更新datetimeCodeIgniter扩本文实例讲述了CodeIgniter扩展核心类的方法。分享给大家供大家参考,具体如下:CI中对核python如何开多线程Python迭代本篇将介绍Python的迭代,更多内容请参考:Python学习指南简介在Python中,如果给定一个llinux回车符Nginx配置文件nginx.#定义Nginx运行的用户和用户组userwwwwww;#nginx进程数,建议设置为等于CPU总核心数。hubbledotnetmysqlHive的TransfHive的TRANSFORM关键字提供了在SQL中调用自写脚本的功能,适合实现Hive中没有的功能又1/3123下一页尾页踩赏赞Tags:公倍数JavaScript最大公约数迭代面向对象详解最新教程phplinux后台运行Linux系统DNS关闭mysql大小写敏感MYSQL5.7.1python判断列表里数量python中文centosphp测试PHP写的获取各搜linux查找硬件命令微软我对不起jspmysql宿舍管理系统mysql_conpython字符串rrawPython2和windows和linux共享盘Linux下的python随机数模块Python9种方法武汉php行情LNMP(linuxnginxmy热门教程1python单行矩阵转置python将图2怎么在加载js时传入参数关于Type3js获取后台变量$vue使用facebook4js绑定回车键jquery中交替点击事5在SQL中获取一个长字符串中某个6linuxmysqlroot权限元旦:由微7建设牌js125t-9从sohu弄下来的fl8linux下查看mysql密码MySQL数据9mysql钱浮点型mysql服务无法启10js实现添加可信站点、修改active最近浏览记录phplinux后台运行Linux系统DNS关闭mysql大小写敏感MYSQL5.7.1python判断列表里数量python中文centosphp测试PHP写的获取各搜linux查找硬件命令微软我对不起jspmysql宿舍管理系统mysql_conpython字符串rrawPython2和windows和linux共享盘Linux下的python随机数模块Python9种方法武汉php行情LNMP(linuxnginxmy关于我们-广告合作-联系我们-免责声明-网站地图-投诉建议-在线投稿浙ICP备140365454号©CopyRight2008-2020002pc.COMIncAllRightsReserved.第二电脑网版权所有