Comment detail

コラッツ・角谷の問題 (Nested Flatten)
n = 1..2^k の範囲で最大ステップ求める場合は、
2^k-1..2^k 間だけ調べることにしました。
後はいたって普通というか、回りくどいというか。
CeleronM1.8GHz, Memory1GB, WindowsXP, WSH(JScript)
--------------------
C:\temp>cscript //nologo collatz.js
f( 837799 ) = 524
time = 29578ms
 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');

Index

Feed

Other

Link

Pathtraq

loading...