La Prova del Nove

«La prova del nove» fa parte del nostro linguaggio parlato e scritto. In generale, indica una verifica che ci garantisce la veridicità o meno di un certo fatto. Ma quanti sanno da dove deriva questa locuzione?

In questo post intendo spiegare la prova del nove e dimostrarla con un semplice script PHP.

Il modulo

In aritmetica, esiste un’operazione chiamata modulo. Non è altro che il resto di una divisione fra due numeri interi. Ora, il modulo 9, cioè il resto della divisione per 9, ha una particolarità che lo rende facile da calcolare anche a mente, per numeri molto alti: equivale alla somma delle sue cifre. Se questa somma dà un risultato di più di una cifra, il procedimento va reiterato fino a ottenere un risultato di una cifra.

Naturalmente, se il risultato è 0 o 9, significa che la divisione non dà resto.

EDIT: in questa somma si può ignorare i 9, perché naturalmente non modificano il risultato. Ad esempio, la somma di 991 sarà 1.
Ringrazio Amedeo (vedi commenti) perché avevo dimenticato questo dettaglio. Nel suo commento vedrete anche come usare la prova del nove con le addizioni.

Esempio semplice:
52 (mod 9) = 7

Esempio reiterativo:
666 (mod 9) = 18 (mod 9) = 9 = 0

La prova

Possiamo sfruttare il modulo 9 per verificare il risultato di due operazioni. Infatti, se è vero che:
a * b = c
deve necessariamente essere vero che:
(a (mod 9) * b (mod 9)) (mod 9) = c (mod 9)
In parole: il mod9 del prodotto del mod9 dei fattori è uguale al mod9 del prodotto dei fattori.

Verifichiamo ad esempio che 55 * 6 = 330:
55 (mod 9) = 1
6 (mod 9) = 6
1 * 6 = 6
330 (mod 9) = 6

L’operazione è quindi corretta!

Ora verifichiamone una volutamente sbagliata: 4 * 40 = 170.
4 (mod 9) = 4
40 (mod 9) = 4
4 * 4 = 16
170 (mod 9) = 8

La prova del 9 ci conferma che l’operazione era errata!

Ma funziona davvero? (update)

Uno dei commenti afferma che la prova del Prova del Nove ha un 11% di probabilità di errore. Questa frase parrebbe riportata da Wikipedia, che afferma la stessa cosa. Non è del tutto falso, ma va spiegato.

Se io eseguo una moltiplicazione correttamente, la Prova del Nove me lo confermerà. Non è possibile che non risulti, state tranquilli. Il codice che vedrete nel prossimo paragrafo lo dimostra.

Naturalmente, non esiste un risultato che significa “hai sbagliato”. Se l’operazione è sbagliata, il risultato della Prova del Nove è semplicemente “imprevedibile”. Siccome il modulo 9 può risultare in un qualsiasi numero tra 0 e 8, e uno di loro è quello che mi aspetto, c’è 1 possibilità su 9 (11.1% periodico) che il risultato sia la cifra che mi aspetto. Il che potrebbe farmi credere che l’operazione sia giusta quando non lo è.

E’ probabile che questo succeda? No: 1 possibilità su 9 è scarsa. A questo bisogna aggiungere che, se eseguo la prova su un certo numero, è perché mi è risultato dalla moltiplicazione: questo aumenta le probabilità in nostro favore.

Implementazione in PHP

Siete bravi a fare i calcoli? Io no. E non era bravo neanche Einstein. Beh, a dire il vero pare che almeno nella teoria lui fosse un po’ più bravo di me, ma questi sono dettagli. Sta di fatto che vi sto scrivendo usando un computer, quindi perché non affidare a lui il compito ingrato di calcolare la prova del nove?

Scriviamo una piccola funzione PHP. Sull’implementazione non c’è molto da dire, se non che il modulo corrisponde all’operatore %.

Ho chiamato la funzione castNines perché prova del nove in inglese si dice casting out nines.

<?php
function castNines($f1, $f2)
{
  $mod1 = $f1 % 9;
  $mod2 = $f2 % 9;
  $p = $f1 * $f2;
  $mod3 = ($f1 * $f2) % 9;
  
  print '<p>';
  print (string)$f1 . ' * ' . (string)$f2 . '<br/>';
  print 'Result: ' . (string)($f1 * $f2) . '<br/>';
  print (string)$f1 . ' (mod 9) = ' . (string)$mod1 . '<br/>';
  print (string)$f2 . ' (mod 9) = ' . (string)$mod2 . '<br/>';
  print '(' . (string)$mod1 . ' * ' . (string)$mod2 . ') (mod 9) = '
    . (string)$mod3 . '<br/>';
  if ($mod3 === ($p % 9)) {
    print '<strong>OK!</strong>';
  } else {
    print 'Oooops! You found an exception to mathematical rules... or just a bug! :)';
  }
  print '</p>';
}
?>

Ora provatela pure con tutti i numeri che volete:

<?php
castNines(12, 10);
castNines(10, 1);
castNines(20, 3);
?>

A presto!

8 pensieri su “La Prova del Nove

  1. Come mi sono sentito vecchio!!!!
    Sono di quella generazione a cui la prova del 9 te la facevano studiare a scuola in terza elementare, prima delle calcolatrici, e pensare che si debba spiegare cos’è ….

    Saluti

  2. Davvero? Io ho studiato che la prova della moltiplicazione si fa con la divisione; sono sicuro che a scuola la prova del 9 non me l’hanno insegnata! Eppure è molto pratica (se non hai davanti un computer), chissà perché hanno smesso di insegnarla.
    Grazie di avermelo fatto sapere

  3. Serve anche nelle somme:
    la somma delle singole cifre degli addendi deve corrispondere alla somma delle singole cifre del risultato, ad esempio
    123 + 456 = 579
    1 +2 +3 +4 +5 +6 = 21 -> 2+1 = 3
    5 +7 +9 = 21 -> 2+1 = 3
    da notare come i 9 possano essere eliminati per semplificare il calcolo a mente, per cui
    1 + 2 (+3 +6) (+4 +5) = 3
    5 + 7 (+9) = 12 -> 1+2 = 3

  4. Molto interessante. mi mancava (o forse non lo ricordavo più dalle scuole medie). PERO’……
    “deve necessariamente essere vero che:
    a (mod 9) * b (mod 9) = c (mod 9)”
    ?????? FORSE MANCA UN “()MOD9” COMPLESSIVO AL PRIMO MEMBRO ????
    ALTRIMENTI 56*6=336 IMPLICA 2*6=3.

  5. Sì, è così! L’ho dato per scontato, ma rileggendolo mi rendo conto che forse io stesso non lo avrei capito, o almeno non subito.
    Nessun altro si è lamentato… cosa significa? Era davvero scontato? Non era scontato ma hanno guardato il codice PHP e hanno capito? O semplicemente, non hanno provato a fare il calcolo? Non lo so… :(
    Intanto non posso che ringraziarti. Correggo subito la formula.

  6. Ragazzi è importante considerare che: Nella prova del 9 il risultato deve essere accettato con riserva, in quanto c’è sempre un 11% di possibilità che sia comunque sbagliato.

  7. Non proprio. Immagino tu l’abbia letto su Wikipedia, che non è molto chiara su questo punto.
    Nel caso un’operazione sia esatta, la prova del nove funziona. Non è possibile che non funzioni.
    Se l’operazione è errata, è chiaro che può funzionare come non funzionare. Siccome i possibili risultati di N (mod 9) sono 9 e 1 è giusto, chiaramente 1 volta su 9 (11.111% periodico) la prova del 9 funzionerà.
    Naturalmente il fatto che 8 risultati su 9 siano errati, uniti al fatto che ti è uscito un certo risultato, rendono molto improbabile che la prova del 9 funzioni quando non doveva funzionare. Mentre se non funziona, sai con certezza di aver sbagliato.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...