5) Smallest multiple

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder. What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

by fosco

JavaScript

// for number 24 primes are: 2 * 2 * 2 * 3 and function will return ['2' : 3, '3' : 1]
function primeFactor(number, div, arr) {
    div = div || 2;
    arr = arr || [];

    if (number % div === 0) {
        number /= div;
        var divStr = div.toString();

        if (arr[divStr] === undefined) {
            arr[divStr] = 1;
        } else {
            ++arr[divStr];
        }

        if (number == 1) {
            return arr;
        }
    } else {
        ++div;
    }

    return primeFactor(number, div, arr);
}

var set = [];
for (var i = 2; i <= 20; i++) {
    var primeArray = primeFactor(i);

    primeArray.forEach(function (val, key) {
        if (set[key] === undefined || set[key] < val) {
            set[key] = val;
        }
    });
}

var value = 1;

set.forEach(function (val, key) {
    value *= Math.pow(parseInt(key, 10), val);
});
console.log(value); //232792560