JSFiddle - React, Tailwind, and code Playground

JavaScript

// Problema 2

function factorizar(n){
    var results = [];
    var x = n;
    var esPrimo = function(a){
        var i = 2, tope = ~~Math.sqrt(a);
        while(i < tope && a % i) i++;
        return a % i || a == 2; // Problema con el 2
    }
    
    for(var i = 2; i <= x; i++){
        if(esPrimo(i) && !(x % i)){
            var c = x;
            while(!(c % i)){
                results.push(i);
                c /= i;
            }
            
            x /= i;
         }
    }
        
    var str = '';
    
    for(var i = 0, len = results.length; i < len; i++){
        var x = results[i], exp = 0;
        while(results[i + 1] == x){
            i++; exp++;
        }
        
        str += ' x ' + x + (exp++ ? '^' + exp : '');
    }
    
    str = str.substr(3); // Borrar el primer " x "
    
    return str;
}

[11, 6, 16, 98].forEach(function(n){ document.write(n, ' : ', factorizar(n), '<br />'); });