[算法问题2]
任意给定一个正整数,将其分解成质数相乘形式
15=3*5
24=2*2*2*3
17=1*17
等号左边为函数参数,右边为返回值
JS,JQ均可,给出思路得分少量,给出程序得分大量。
              
------解决方案--------------------<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
function isS(num){
	if(num<=2){
		return num;
	}
	for(var i=2;i<num/2;i++){
		if(num%i==0){
			return 0;
		}
	}
	return num;
}
function isS2(num){
	if(isS(num)){
		return "1*"+num;
	}
	var a=[];
	var s=1;
	var k=num;
	for(var i=2;i<=k;i++){
		if(isS(i)&&k%i==0){
			a.push(i);
			k=k/i;
			i=1;
		}
	}
	for(var i=0;i<a.length;i++){
		s*=a[i];
	}
	if(s==num){
		return a.join('*');
	}else{
		return "--";
	}
}
alert(isS2(15));
alert(isS2(24));
alert(isS2(17));
alert(isS2(18));
</script>
</head>
<body>
</body>
</html>
用最笨的方法遍历试试
------解决方案--------------------function getArray(num){
		var arr = [];
		while(num >=2){
			for(var i=2;i<=num;i++){
				if(num%i == 0){
					arr.push(i);
					num = num/i;
					break;
				}
			}
		}
		return arr;
	}
只是分解成质数的话,这样应该就可以了吧。
循环次数,就是左边那个数。
如果需要作出,所有可乘的组合,那就把返回的数组,进行组合就可以了
不过组合时,有重复的数字的时候,处理就有些麻烦了。
------解决方案--------------------更正
function numSplit(num,result){
	var splitUnit = [2,3,5,7];
	var $a;
	if(typeof result == 'undefined'){
		result = []
	}
	if(($a = parseInt(num/splitUnit[0])) && ($a*splitUnit[0] == num)){
		result.push(splitUnit[0]);
		return numSplit($a,result);
	}
	if(($a = parseInt(num/splitUnit[1])) && ($a*splitUnit[1] == num)){
		result.push(splitUnit[1]);
		return numSplit($a,result);
	}
	if(($a = parseInt(num/splitUnit[2])) && ($a*splitUnit[2] == num)){
		result.push(splitUnit[2]);
		return numSplit($a,result);
	}
	if(($a = parseInt(num/splitUnit[3])) && ($a*splitUnit[3] == num)){
		res