JSFiddle - React, Tailwind, and code Playground

by Lysander

JavaScript

var primes = [2],
    primes_found = 1;


function append_prime(p) {
    primes[primes_found] = p;
    primes_found += 1;
}

function is_prime(x) {
    var x_is_prime = true;
    for (var j = 0; j < primes_found; j++) {
        if (x % primes[j] == 0) {
            x_is_prime = false;
            break;
        }
    }
    return x_is_prime;
}

function find_next_prime() {
    var last_found_prime = primes[primes_found - 1],
        i;

    for (i = last_found_prime + 1; true; i++) {
        if (is_prime(i)) break;
    }
    
    append_prime(i);
    return i;
}

function is_factor(x, n) {
    return x % n == 0;
}

var n = 543212345;
var factors = [];

for (var p = primes[0]; n != 1; p = find_next_prime()) {
    while(is_factor(n, p)) {
        n = n / p;
        factors.push(p);
    }
}

console.log(factors);