es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo dividir un número entre 2 tantas veces como sea posible, y luego mostrarlo en Javascript?

Me gustaría escribir un programa que lea un número entero y luego lo divida por 2 tantas veces sea posible, mientras se escribe el número como un producto de dos números multiplicado por un número que ya no sea divisible por 2.

Por ejemplo:

Me gustaría un número entero: 120

120 = 2 * 2 * 2 * 15

Aquí es hasta donde he llegado (parte de ello ya está bueno en mi opinión, pero desafortunadamente me quedé atascado aquí):

let num = Number(prompt('El número: '));

let i = 0;
while(!(num % 2)) { 
    num /= 2; 
    i++; 
}

let solution = Array(i).fill(2).join(' * ');

console.log(solution);
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para completar el programa, puedes añadir el siguiente código después del código existente:

    let otherFactor = num; // Asigna el valor actual de num a otherFactor
    for(let j = 3; j <= Math.sqrt(num); j += 2) { // Comprueba los factores impares hasta la raíz cuadrada de num
        while(!(otherFactor % j)) { // Divide otherFactor por j tantas veces como sea posible
            otherFactor /= j;
        }
    }
    
    if(otherFactor > 2) { // Si otherFactor sigue siendo mayor que 2, es el último factor
        solution += " * " + otherFactor;
    }
    
    console.log(`${num} = ${solution}`);
    

    Así es como funciona el programa completo:

    1. Lee un entero del usuario utilizando prompt().
    2. Utiliza un bucle while para dividir el entero por 2 tantas veces como sea posible, y guarda el número de divisiones en la variable i.
    3. Crea una cadena de texto solution que representa el número como un producto de 2. Por ejemplo, si el número es 120 y se puede dividir por 2 seis veces, entonces solution será la cadena de texto “2 * 2 * 2 * 2 * 2 * 2”.
    4. El programa luego verifica otros factores del número recorriendo números impares hasta la raíz cuadrada del número. Si se encuentra un factor, divide el valor actual del número por el factor tantas veces como sea posible y guarda el factor en la variable otherFactor.
    5. Si otherFactor es mayor que 2, se añade al final de la cadena de texto solution.
    6. Finalmente, el programa imprime el número original y la cadena de texto solution final.

Comments are closed.