Scompositore in fattori primi online

Scompositore fattori primi online

Lo scompositore in fattori primi è un programma online che permette di ottenere la lista dei fattori primi di un numero.

La scomposizione in fattori primi è un’operazione fondamentale per risolvere diversi tipi di problemi e operazioni matematiche, ad esempio quando dobbiamo ricavare il Massimo Comune Divisore (MCD) e Il minimo comune multiplo (mcm).

Il seguente scompositore online permette di ottenere la lista dei numeri che moltiplicati tra di loro permette di ricavare il numero indicato. Basta scrivere il numero da scomporre, cliccare sul pulsante Scomponi, e avremo la lista. Nel caso in cui un numero non è scomponibile verrà definito come numero primo.

Scompositore in fattori primi

Come creare uno scompositore in fattori primi

Qui puoi scoprire come creare un semplice scompositore; puoi anche aggiungere questa pagina nei tuoi articoli preferiti accedendo alle impostazioni del tuo browser.

Un programma può essere creato tramite qualsiasi linguaggio di programmazione. Per comodità, viene usato JavaScript, il linguaggio di programmazione per il web, dato che basta aprire la relativa pagina html per accedere al programma oppure ti basta copiare questo codice nella Console del browser di un PC cliccando F12. Dopodiché ti basta richiamare la funzione Scomponi_In_Fattori() scrivendo dentro parentesi il numero da scomporre.

Questa è la funzione per scomporre in fattori un numero e viene spiegata dettagliatamente in questo articolo:

 /**
 * Riporta la lista dei fattori di un numero
 * @param {int} numero_da_scomporre 
 * @returns 
 */  
function Scomponi_In_Fattori(numero_da_scomporre) {
        let numero = numero_da_scomporre;
        let listaFattoriPrimi = [];

        if (numero_da_scomporre !== 1) {
            for (let fattore = 2; fattore <= numero; fattore++) {
                while (numero % fattore === 0) {
                    listaFattoriPrimi.push(fattore);
                    numero /= fattore;
                }
            }
        } else {
            listaFattoriPrimi.push(1)
        }

        return listaFattoriPrimi;
    }

Questa funzione verrà implementata nel programma che vogliamo creare. Dato che si tratta una web app, utilizzeremo i codici HTML per la struttura del sito, CSS per la grafica e JavaScript per le funzionalità.

<style>
    .scomposizione-fattori-primi {
    max-width: 400px;
    margin: 0 auto;
    padding: 20px;
    background-color: #f4f4f4;
    border-radius: 10px;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}

.scomposizione-fattori-primi h1 {
    text-align: center;
    color: #333;
}

.scomposizione-fattori-primi form {
    margin-top: 20px;
}

.scomposizione-fattori-primi label {
    display: block;
    margin-bottom: 5px;
    color: #555;
}

.scomposizione-fattori-primi input[type="number"] {
    width: 100%;
    padding: 10px;
    margin-bottom: 15px;
    border: 1px solid #ccc;
    border-radius: 5px;
}

.scomposizione-fattori-primi button {
    width: 25%;
    padding: 10px;
    background-color: #4caf50;
    color: #fff;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.3s ease;
}

.scomposizione-fattori-primi button:hover {
    background-color: #45a049;
}

.scomposizione-fattori-primi p#risultato {
    margin-top: 20px;
    padding: 10px;
    background-color: #fff;
    border: 1px solid #ccc;
    border-radius: 5px;
}

</style>

Adesso creiamo un piccolo form HTML per inserire un campo dove si scrive il numero da scomporre, il pulsante che esegue il programma e infine un paragrafo che riporta il risultato:

<div class="scomposizione-fattori-primi">
    <h1>Scompositore in fattori primi</h1>
    <form id="scompositore-form">
        <label for="numero">Numero da scomporre</label>
        <input type="number" id="numero" placeholder="Inserisci il numero da scomporre" required>

        <button type="button" id="pulsante-scompositore">Scomponi</button>

        <p id="risultato"></p>
    </form>
</div>

Nello script, prima della funzione per scomporre un numero inseriamo il codice del programma; in pratica, accediamo agli elementi HTML e diciamo allo scompositore di avviarsi quando l'utente clicca su Scomponi e di riportare il risultato.

<script>
    const pulsanteScompositore = document.getElementById('pulsante-scompositore');

    pulsanteScompositore.addEventListener('click', () => {
        const numeroDaScomporreInput = document.getElementById('numero');
        const numeroDaScomporre = parseInt(numeroDaScomporreInput.value);

        // Controlla se il campo "Numero da scomporre" è stato compilato
        if (isNaN(numeroDaScomporre)) {
            alert('Inserisci un numero valido.');
            return;
        }

        const listaFattoriPrimi = Scomponi_In_Fattori(numeroDaScomporre);
        ScriviListaFattori(numeroDaScomporre,listaFattoriPrimi)
    });


/**
 * Riporta la lista dei fattori di un numero
 * @param {int} numero_da_scomporre 
 * @returns 
 */
    function Scomponi_In_Fattori(numero_da_scomporre) {
        let numero = numero_da_scomporre;
        let listaFattoriPrimi = [];

        if (numero_da_scomporre !== 1) {
            for (let fattore = 2; fattore <= numero; fattore++) {
                while (numero % fattore === 0) {
                    listaFattoriPrimi.push(fattore);
                    numero /= fattore;
                }
            }
        } else {
            listaFattoriPrimi.push(1)
        }

        return listaFattoriPrimi;
    }

    function ScriviListaFattori(numeroDaScomporre,listaFattoriPrimi) {
        const paragrafoRisultato = document.getElementById('risultato');

        if (listaFattoriPrimi.length === 1) {
            paragrafoRisultato.textContent = 'Il numero è primo; impossibile scomporlo in fattori';
        } else {
            paragrafoRisultato.textContent = `I fattori primi di ${numeroDaScomporre} sono: ${listaFattoriPrimi.join(', ')}`;;
        }
    }
</script>

Come puoi notare, ho creato una funzione a parte per riportare la lista nel file HTML. In questo modo, il codice dello scompositore è più ordinato e possiamo concentrarci sulle varie parti del programma separatamente se dobbiamo aggiornare qualcosa.

Poiché le variabili sono state create all'interno delle varie funzioni, è importante passarli come parametri tra una funzione è l'altra. Inoltre, può essere utile anche sapere che tipo di variabili abbiamo bisogno, se si tratta di stringhe, numeri interi oppure di liste. Pertanto, un linguaggio di programmazione più avanzato come TypeScript o C# è più adatto per programmi più pesanti e complessi.

Ad esempio, questo è il codice per creare uno scompositore in fattori primi con C# con un semplice progetto App Console:

using System;

bool programmaAttivo = true;

do
{
    EseguiProgramma();

    programmaAttivo = ChiediRiavvio();

} while (programmaAttivo == true);

static void EseguiProgramma()
{
    Console.WriteLine("Digita il numero da scompore");
    int numero = Convert.ToInt32(Console.ReadLine());

    List<int> listaFattoriPrimi = Scompositore.Scomponi_In_Fattori(numero);

    RiportaListaNellaConsole(numero, listaFattoriPrimi);
}
class Scompositore
{
    static public List<int> Scomponi_In_Fattori(int numero)
    {
        int numero_da_scomporre = numero;
        List<int> listaFattoriPrimi = [];

        if (numero_da_scomporre != 1)
        {
            for (int fattore = 2; fattore <= numero_da_scomporre; fattore++)
            {
                while (numero_da_scomporre % fattore == 0)
                {
                    listaFattoriPrimi.Add(fattore);
                    numero_da_scomporre /= fattore;
                }
            }

        }
        else listaFattoriPrimi.Add(1);

        return listaFattoriPrimi;
    }
}
static bool ChiediRiavvio()
{
    Console.WriteLine("Vuoi scomporre un altro numero? (Y/N)");
    string risposta = Console.ReadLine().ToUpper();

    if (risposta != "Y" && risposta != "N") {
        Console.WriteLine("Rispondi Y oppure N");
        ChiediRiavvio();
    }

    if (risposta == "N")
    {
        return false;
    }

    return true;
}


static void RiportaListaNellaConsole(int numeroIniziale, List<int> listaFattoriPrimi)
{
    switch (listaFattoriPrimi.Count)
    {
        case 1:
            Console.WriteLine("Il numero è primo; impossibile scomporlo in fattori");
            break;
        default:
            Console.WriteLine($"I fattori di {numeroIniziale} sono {string.Join(", ", listaFattoriPrimi)}");
            break;
    }
}

Come puoi notare, con questo linguaggio indichiamo il tipo di variabili che ci interessano:

  • int e List<int>: Indichiamo rispettivamente che dobbiamo inserire come parametro oppure ricevere un numero intero oppure una lista di interi;
  • bool: Vogliamo ricevere un semplice valore booleano per eseguire o spegnere il programma. True o false, vero o falso.
  • Abbiamo creato una classe specifica per lo scompositore in fattori primi per rendere il codice più modulare. E' possibile farlo anche con TypeScript e JavaScript ma l'importazione dei moduli può essere più complesso e richiedere un framework specifico. C# dispone anche di una migliore lista di suggerimenti.
  • E' più facile trovare gli errori mentre si scrive il codice mentre con JavaScript bisogna usare la console del browser.

In questo caso però non abbiamo uno scompositore online; per farlo bisogna usare un framework specifico per C# come Blazor.


Le mie pubblicazioni

Per avere sempre a disposizione gli argomenti principali del sito, arricchire ancora di più le vostre conoscenze e offrirvi nuovi strumenti e punti di vista ho preparato diversi libri.