网站地图 | RSS订阅 凌陈亮博客 - 专业上海SEO上海SEO优化,分享网站优化知识,同时提供上海SEO服务。
你的位置:首页 » 前端脚本 » 正文

JS求N个数字的最大公约数和最小公倍数

2016-9-18 14:40:50 | 作者:凌陈亮 | 0个评论 | 人浏览

<script language="javascript">
//函数功能:求N个数字的最大公约数和最小公倍数
//参数:数字集合(间隔符使用英文逗号, 如:16,24)
//调用方式:参照下方求两位数字和三位数字的最大公约数和最小公倍数案例
//制作:凌陈亮(QQ:57404811)
function getGCDLCM(str){
	var arr=eval("[" + str + "]");
	var max=Math.max.apply(null, arr);
	var min=Math.min.apply(null, arr);
	var GCDLCM=new Object(); //函数返回对象
	GCDLCM.str=str; //输入的数字集合
	GCDLCM.num=arr.length; //数字总个数
	var i,j,ifstr="";
	for(j=0;j<arr.length;j++){
		ifstr+=arr[j] + "<1";
		if(j<arr.length-1) ifstr+="||"
	}
	if(eval(ifstr)){
		GCDLCM.GCD=-1; //最大公约数
		GCDLCM.LCM=-1; //最小公倍数
		return GCDLCM;
	}
	//求最大公约数
	for(i=min;i>0;i--){
		ifstr="";
		for(j=0;j<arr.length;j++){
			ifstr+=arr[j] + "%" + i + "==0";
			if(j<arr.length-1) ifstr+="&&"
		}
		if(eval(ifstr)){
			GCDLCM.GCD=i; //最大公约数
			break;
		}
	}
	//求最小公倍数
	var n=1;
	for(j=0;j<arr.length;j++){ n=n*arr[j]; }
	for(i=max;i<=n;i++){
		ifstr="";
		for(j=0;j<arr.length;j++){
			ifstr+=i + "%" + arr[j] + "==0";
			if(j<arr.length-1) ifstr+="&&"
		}
		if(eval(ifstr)){
			GCDLCM.LCM=i; //最小公倍数
			break;
		}
	}
	return GCDLCM;
}
//例1:求两个数的最大公约数和最小公倍数
var result=getGCDLCM("16,24");
window.document.write("<p>您要查最大公约数和最小公倍数的数字为:" + result.str + "</p>");
window.document.write("<p>数字个数为:" + result.num + " 个</p>");
window.document.write("<p>最大公约数为:" + result.GCD + "</p>");
window.document.write("<p>最小公倍数为:" + result.LCM + "</p>");
//例2:求三个数的最大公约数和最小公倍数
var result=getGCDLCM("16,24,96");
window.document.write("<p>您要查最大公约数和最小公倍数的数字为:" + result.str + "</p>");
window.document.write("<p>数字个数为:" + result.num + " 个</p>");
window.document.write("<p>最大公约数为:" + result.GCD + "</p>");
window.document.write("<p>最小公倍数为:" + result.LCM + "</p>");
</script>


  • 本文来自: 凌陈亮博客,转载请保留出处!欢迎发表您的评论
  • 相关标签:Javascript  算法  
  • 已有0位网友发表了一针见血的评论,你还等什么?

    必填

    选填

    记住我,下次回复时不用重新输入个人信息

    必填,不填不让过哦,嘻嘻。

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。