Numero primo? (scuola media)
Numero primo? (scuola media)
[modifica]Scoprire se un numero è primo oppure composto. Si può fruire di questo tutorial in forma di mappa mentale su wiki2map
Versione di Scratch utilizzata
[modifica]La versione di scratch usata in questo progetto è scratch 3.0 online.
Cosa richiede l'esercizio
[modifica]Fornito un numero numero in input, rispondendo alla richiesta del gatto, attraverso un numero di prove adeguato scoprire se il numero è primo oppure non lo è, e, ovviamente, ottenere in output il responso.
Come controllare se un numero è primo
[modifica]La velocità di calcolo del PCVK permette di eseguire molti calcoli in poco tempo, questa capacità di lavoro ci permette di affrontare il problema per tentativi, avendo però l'accortezza di produrre i nostri tentativi in modo ordinato, cosa che ci permetterà di essere esaustivi, cioè di smettere di provare nel momento in cui si ha la certezza di aver provato, ed eventualmente trovato, tutti i divisori possibili.
Per chiarezza un procediamo con un esempio commentandolo, considerando dapprima come si possono trovare tutti i divisori di un numero, il nostro controllo necessita di meno operazioni e si fermerà eventualmente al primo divisore trovato.
Troviamo i divisori di
Video per chi non ama leggere: Matteo Ruffoni, Trovare divisori per tentativi 2, su YouTube, 16 gennaio 2020.
Proviamo:
quindi è un divisore di , scopriamo così che anche lo è,
quindi, per ora,
Se stessimo facendo il nostro controllo potremmo già fermare la ricerca:
« non è un numero primo.»
Continuiamo però per comprendere quando potremo interromperla avendo trovato tutti i divisori.
quindi e sono divisori di , e lo stesso
quindi e sono divisori di ,
notiamo che al crescere dei divisori i quozienti diminuiscono, non proviamo a dividere per , invece
quindi è un divisore di , ed è l'ultimo.
Infatti il divisore è uguale al quoziente, i prossimi divisori saranno tutti più grandi dei rispettivi quozienti, e quali mai potrebbero essere se non i quozienti già trovati
Quindi tutti i divisori di sono
dove i primi sono stati trovati come divisori, mentre gli altri sono stati trovati come quozienti, ma sono a loro volta divisori.
Per maggior chiarezza proviamo ora con un numero che sappiamo già essere primo.
Testiamo il numero
Facciamo alcune prove come se fossimo un PC, quindi proviamo tutti i casi:
non è un divisore e notiamo che ,
non è un divisore e ,
non è un divisore e ,
ricordiamo che se un numero non è divisibile per non lo è nemmeno per , il pc questa operazione le prova lo stesso, ma in un tentativo non digitale questa prova viene omessa,
non è un divisore e notiamo che ,
non è un divisore e
, vale lo stesso di quello scritto per ,
non è un divisore e notiamo che ,
Il pc prosegue le sue prove con e anche se già si sa che nessno dei due è un divisore di
non è un divisore e ,
non è un divisore e notiamo che è il primo divisore più grande del quoziente infatti ,
quindi, per ora eventuali altri divisori più grandi di dovrebbero produrre quozienti più piccoli di ma come abbiamo appena controllato non ce ne sono.
Le prove sono finite e possiamo concludere che è primo.
In un eventuale test condotto senza PC molte prove possono essere omesse, così come evidenziato, tenendo conto dei criteri di divisibilità e del fatto che se un numero non è divisibile per un numero non lo sarà nemmeno per un suo multiplo.
In un test manuale il divisore da provare dopo il è e il risultato è
non è un divisore e come per , verifichiamo che il divisore è più grande del quoziente infatti
.
Variabili
[modifica]Cominciamo con preparare le variabili necessarie (input) al funzionamento Numero, Divisore e Quoziente. L'output ci verrà fornito con una frase.
Istruzioni | Immagini |
---|---|
Creiamo 3 variabili:
Numero, Divisore, Quoziente |
Eccole: |
Input e Valori iniziali
[modifica]Il nostro test comincerà clikkando sulla bandiera verde.
Per prima cosa poniamo il divisore uguale a e poi il Gatto ci chiederà quale numero vogliamo testare.
Il ciclo repeat until
[modifica]Questo ciclo si ripeterà, a meno si non trovare prima un divisore, fino ad esaurire tutti i possibili divisori del numero, cosa che si raggiunge appena il divisore diventa maggiore del quoziente. Ad ogni passaggio viene incrementato il divisore.
Numeri non primi fermare il ciclo repeat
[modifica]Se un numero è primo il ciclo repeat termina quando il divisore diventa maggiore del quoziente e il Gatto ci comunica che il numero è primo.
Dobbiamo però prevedere di interrompere il ciclo nel momento in cui venga trovato un divisore cosa che ci viene rivelata dalla comparsa di un divisore del numero, comparsa che ci viene rivelata dal fatto che il resto della divisione tra numero e divisore diventa uguale a zero.
Codice completo test numero primo
[modifica]Sprite | Blocchi codice | Istruzioni |
---|---|---|
Codice completo del progetto. |
Schema progetto da montare
[modifica]A questo link https://scratch.mit.edu/projects/360377083/ si trova il progetto scratch smontato va remixato e montato nella sequenza corretta.
Note
[modifica]Bibliografia
[modifica]- Guida all’uso di Scratch Versione Studenti; Alberto Barbero, Marco Marchisotti, Alberto Davì; Associazione Dschola, Iniziativa realizzata nell’ambito del progetto Diderot della Fondazione CRT, 2014