The Collatz sequence is defined by the following rule:
n = n/2 if n is even
n = 3n + 1 if n is odd
Based on this rule and starting with 20; the following sequence is generated:
20 – 10 – 5 – 16 – 8 – 4 – 2 – 1
var math = require('mathjs');
var log = console.log;
var integer = function(n) {
var output = [];
for(ii = 1; ii <= n; ii++) {
output.push(ii);
}
return output;
};
var collatz = function(k) {
var output = [k];
var n = k;
while(n > 1) {
if(n % 2 === 0) {
n /= 2;
output.push(n);
} else {
n = (3*n + 1);
output.push(n);
}
}
return output.length;
}
var colsearch = function(j) {
var intlist = integer(j);
var output = [];
for(ii in intlist) {
output.push(collatz(intlist[ii]));
}
return output;
}
var isearch = function(as) {
var output = [];
var max = math.max(as);
var acc = 0;
for(ii in as) {
if(as[ii] === max) {
acc = Number(ii) + 1;
output.push(acc);
}
}
return output;
};
Using this code the starting number up to 1 million which produces the longest Collatz sequence is 837799

