1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
function steps(n){
  var step = 0;
  for(;n!=1; step++)
    n = (n&1) ? n*3+1 : n/2;
  return step;
}
function maxim(lim){
  var result = 0;
  var step = 0;
  for(var i=(lim&(lim-1))?1:lim/2; i<=lim; i++){
    var temp = steps(i);
    if(temp > step) { step=temp; result=i; }
  }
  return result;
}

var tm = (new Date).getTime();
var n = maxim(Math.pow(2,20));
var s = steps(n);
WScript.Echo('f( '+n+' ) = '+s);
WScript.Echo('time = '+((new Date).getTime()-tm) + 'ms');