var risultato = "";
var base = 2;
var esponente = 0;

function aggiornaRisultato()
{
  if (risultato.length>0) risultato += " · ";
  risultato += base;
  if (esponente>1)
    risultato += "^"+esponente;
  esponente = 0;
}

function scomposizione(numero)
  {
    if (isNaN(numero))
      return(numero+" non è un numero.");
    if (numero != parseInt(numero))
      return(numero+" non è un numero intero.");
    if (numero<2)
      return("Solo numeri maggiori di 1.");
    risultato = "";
    dividendo = numero;
    n_fattori = 0;
    esponente=0;
    base = 2; 

    while ((dividendo & 1)==0)
      {
        dividendo >>= 1;
        esponente++;
        n_fattori++;
      }
    if (esponente>0)
      aggiornaRisultato();

    radiceq = Math.sqrt(numero);
    base = 3;
    esponente = 0;

    while ((dividendo>1) && (base <= radiceq))
      if ((dividendo % base)==0)
        {
          n_fattori++;
          dividendo /= base;
          esponente++;
        }
      else
        {
          if (esponente>0)
            {
              n_fattori++;
              aggiornaRisultato();
            }
          base += 2;
        }
    if (dividendo>1)
      {
        n_fattori++;
        base = dividendo;
        esponente = 1;
        aggiornaRisultato();
      }
    else
      if (esponente>0)
        aggiornaRisultato();
  
    if (n_fattori==1)
      return(numero+" è primo.")
    else
      return(risultato)      
  }

