日期:2014-05-16 浏览次数:20459 次
function countFactor(n) //获取数字n的因子数量
{
if(n==1)
return 1;
var f=2;
for(var i=2;i<=Math.floor(Math.sqrt(n));i++)
{ if(n%i==0)
{ if(Math.floor(Math.sqrt(n))==Math.sqrt(n))
{ f+=1;}
else
{ f+=2;}
}
}
return f;
}
/*比较函数应该具有两个参数a和b。如果返回值小于0,则a排在b前面;如果返回值大于0,则b排在a前面;如果返回值为0,顺序不变*/
function factorSort(a,b)
{
if(countFactor(a)>countFactor(b)) /*因数多的总是排在因数少的前面*/
{ return -1;}
else if(countFactor(a)==countFactor(b)) /*因数相同的降序排列*/
{ return b-a;}
else
{ return 1;}
}
var arr2 = new Array(6,8,12,1,9,50,49,3,2,30);
document.write("先按因数排列再按大小排列"+arr2.sort(factorSort)+"</br>");