87,914
社区成员
发帖
与我相关
我的任务
分享
function resolve(n){
var l = n,arr=[];
while(l>1){
for(var i= 2;i<=l;i++){
if(l % i ==0){
arr.push(i);
l /= i;
break;
}
}
}
return n+"="+(arr.length==1?"1*":"")+arr.join("*");
}
给的数必须大于1.
function gtno(n)
{
var za = [2];
gtr: for(var i=3; i<=n/2; i+=2)
{
for(var r=2; r<i/2; r++)
if(i%r==0)
continue gtr;
za.push(i);
}
var arr = [];
function def(s)
{
var i=0,sb;
while((sb=za[i++]) && s%sb!=0);
if(sb)
{
arr.push(sb);
def(s/sb);
}
}
def(n);
return arr.length==0?"1*"+n:arr.join("*");
}
alert(gtno(15));
alert(gtno(24));
alert(gtno(17));
alert(gtno(442));
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)){
result.push(splitUnit[3]);
return numSplit($a,result);
}
if(result.length == 0){
return '1 * ' +num;
}else{
return result.join('*');
}
}
var $a = numSplit(24);
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)){
result.push(splitUnit[3]);
return numSplit($a,result);
}
if(result.length == 0){
return '1 * ' +num;
}else{
return result.join('*');
}
}
var $a = numSplit(15);
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;
}
只是分解成质数的话,这样应该就可以了吧。
循环次数,就是左边那个数。
如果需要作出,所有可乘的组合,那就把返回的数组,进行组合就可以了
不过组合时,有重复的数字的时候,处理就有些麻烦了。