<html>
<head>
</head>
<body>
<div id=”show”></div>
<script>
function ride(x, y){
var re = /(\d{4})/g,
x1 = x.toString(),
y1 = y.toString(),
s = ”,
sl = ”,
ln = 0,
tl = 0,
tx = [];
x1 = x1.replace(re, ‘$1,’);
x1 = x1.replace(/\,$/, ”);
tx = x1.split(‘,’);
ln = tx[tx.length - 1].length;
//分段乘法运算, 转换成整型
for( var i = 0, l = tx.length; i < l; i++ ){
tx[i]= tx[i]*y1;
}
s = tx[tx.length - 1].toString();
if( tx.length > 1 && s.length > ln ){
tx[tx.length-2] += ( s.substring(0, s.length – ln) * 1);
tx[tx.length-1] = s.toString().substring(s.length-ln);
}
//进位运算
for(var i = tx.length – 2; i >0; i–){
if(tx[i] >= 10000){
tx[i-1] += Math.floor(tx[i]/10000);
tx[i] = tx[i]%10000;
}
}
//补零运算
for( var i = tx.length – 2; i > 0; i– ){
if( tx[i] < 1000 ){
for(var k1 = 0, k2 = 4 – tx[i].toString().length; k1 < k2; k1++ ){
tx[i] = ‘0′ + tx[i];
}
}
}
return tx.join(”);
}
function lev(n){
var s = 1, r= ”;
for( var i =1; i <= n; i++ ){
s = s.toString().replace(/(0*)$/,”);
r += RegExp.$1;
s=ride(s, i);
}
s+=r;
return s;
}
var t1 = new Date().getTime();
document.getElementById(’show’).innerHTML = ‘1000阶乘:<br />’ + lev(1000);
document.getElementById(’show’).innerHTML += ‘<br /><br />总耗时= ‘ + (new Date().getTime() – t1) + ‘ ms’;
</script>
</body>
</html>
