Scegli una modalità e scrivi i numeri interi. «Resto» funziona anche con i numeri negativi e mostra come il resto matematico (0 o più) differisca dall’operatore % della programmazione.
Indice
-
Cosa puoi fare in questa pagina
-
A cosa serve questo calcolo?
-
Come si usa
-
Formule e figure
-
Simboli e termini
-
Cosa conviene sapere prima
-
Come calcolarlo con Excel
-
Come calcolarlo con Fogli Google
-
Come calcolarlo con Python
-
La formula in LaTeX e in altre notazioni matematiche (da copiare)
-
Come chiedere a ChatGPT di fare il calcolo
-
I punti di forza di DataChef
-
Funzioni correlate
-
Tutte le calcolatrici di NumberChef
Cosa puoi fare in questa pagina
- Trova il resto della divisione di un numero intero \(a\) per \(n\). Funziona anche con i numeri negativi (per esempio \(-7\) diviso \(3\)): la pagina mostra il resto matematico (\(0 \le r < n\)) accanto al risultato dell’operatore % in C, Java, JavaScript e linguaggi simili (che può essere negativo)
- Verifica se vale la congruenza \(a \equiv b \pmod{n}\), con il motivo: se la differenza \(a - b\) è un multiplo di \(n\)
- Ottieni il resto esatto di una potenza enorme, come \(7^{100}\) diviso \(13\), con i passaggi del metodo dei quadrati ripetuti (i numeri troppo grandi per una calcolatrice normale non sono un problema)
- Guarda il resto su un quadrante di orologio (il cerchio di mod \(n\)) e fatti un’idea di come i resti girino sempre sulle stesse posizioni (il quadrante compare quando il modulo \(n\) è tra 2 e 24)
- In questa pagina trovi anche la spiegazione semplice delle formule e le formule da copiare e incollare per Excel, Fogli Google e Python
A cosa serve questo calcolo?
Su un orologio a 12 ore, «le 14 sono le 2 del pomeriggio» è esattamente il calcolo del resto 14 mod 12 = 2. I giorni della settimana funzionano allo stesso modo, su un orologio che fa un giro ogni 7 giorni. Per esempio, se oggi è lunedì, poiché 100 mod 7 = 2, il giorno tra 100 giorni è «2 giorni dopo lunedì», cioè mercoledì.
Le agende di carta e le app di calendario collegano le date ai giorni della settimana con questo calcolo del resto.
L’ultima cifra del codice a barre di un prodotto (EAN-13) o dell’ISBN-13 di un libro è una cifra di controllo ricavata dalle altre cifre con un calcolo del resto. Per un EAN-13, per esempio, le cifre si moltiplicano alternativamente per 1 e per 3 e si sommano, e l’ultima cifra si sceglie in modo che il totale sia un multiplo di 10, cioè a partire dal resto di quel totale diviso 10. Anche i due caratteri di controllo dell’IBAN si calcolano con il resto di una divisione, per 97.
Se una cifra viene scritta male, il resto non torna più, quindi le casse dei negozi e i siti di acquisto possono accorgersi dell’errore subito. La cifra di controllo dei numeri delle carte di credito si basa sulla stessa idea.
L’RSA, la crittografia a chiave pubblica più nota per inviare in sicurezza cose come i numeri delle carte di credito, usa direttamente nei suoi calcoli «il resto di una potenza enorme». Una potenza modulare si calcola in fretta, ma risalire dal risultato al numero di partenza è estremamente difficile. È questa proprietà a senso unico a renderla sicura.
Il metodo dei quadrati ripetuti, di cui la modalità «Potenza modulare» di questa pagina mostra i passaggi, è il calcolo che i programmi di crittografia eseguono ogni giorno.
In programmazione l’operatore % si usa di continuo: i % 2 distingue pari e dispari, e i % n crea un ordine che ricomincia ogni n elementi (scegliere il giocatore successivo in un gioco a turni, tornare alla prima diapositiva dopo l’ultima, e così via).
Quando ci sono numeri negativi, % dà risultati diversi in linguaggi diversi, quindi conoscere la differenza tra «il resto matematico e % in C e Java» aiuta quando cerchi un errore.
Dividi 63 matite in parti uguali tra 12 persone: ognuna ne riceve 5 e ne avanzano 3 (63 = 12 × 5 + 3). Mettere la merce nelle scatole (quante scatole piene da n e quanti pezzi avanzano), dividere le persone in gruppi per una festa: ogni situazione in cui «si divide in parti uguali e si guarda cosa avanza» è questo calcolo.
L’uguaglianza fondamentale della divisione a = n × q + r riunisce tutte queste situazioni di ogni giorno in un’unica formula.
Formule e figure
Simboli e termini
Simboli
| \(\equiv\) | è congruente a | Il simbolo della congruenza. È un segno di uguale con tre linee invece di due e dice «uguali nel mondo dei resti», che è meno rigido di «esattamente uguali». |
| \(\bmod\) (mod) | modulo | Abbreviazione di «modulo», dalla parola latina modulus (una piccola misura). «\(a \bmod n\)» significa «il resto della divisione di \(a\) per \(n\)», e «\(\pmod{n}\)» scritto dopo un’uguaglianza dichiara «stiamo lavorando modulo \(n\)». |
| \(a,\ b\) | a, b | I numeri interi di cui guardi i resti. In una congruenza sono i due numeri interi a sinistra e a destra. Per i numeri fissi si usano per tradizione le lettere dell’inizio dell’alfabeto. |
| \(n\) | n | Il modulo (il numero per cui dividi). Si usa spesso la lettera \(n\), da «numero». In questa pagina è un numero intero maggiore o uguale a 1. |
| \(q\) | q | Il quoziente, dall’iniziale di «quoziente». Quando si divide un numero negativo, il quoziente si abbassa al numero intero più piccolo in modo che il resto sia 0 o più (divisione per difetto). |
| \(r\) | r | Il resto, dall’iniziale di «resto». In matematica si sceglie sempre nell’intervallo \(0 \le r < n\). |
| \(m\) | m | Il numero intero della definizione di congruenza che dice quante volte il modulo sta nella differenza. Può essere negativo o 0. |
| \(a^{k}\) | a alla k | \(a\) moltiplicato per sé stesso \(k\) volte (una potenza). Il piccolo numero \(k\) in alto a destra è l’esponente e dice quante volte moltiplicare. |
| % | per cento (come operatore, modulo) | L’operatore modulo che trova un resto in molti linguaggi di programmazione. È lo stesso segno della percentuale ma ha un compito diverso. In C, Java e JavaScript il suo risultato per i numeri negativi può essere diverso dal resto matematico (vedi l’idea chiave della prima formula). |
Termini
| resto | Ciò che avanza quando una divisione non è esatta. In matematica è sempre almeno \(0\) e minore del divisore. Si dice anche residuo. |
| quoziente | Il numero intero che dice quante volte il divisore può essere tolto. È il \(q\) dell’uguaglianza fondamentale della divisione \(a = n \times q + r\). |
| modulo | Il numero \(n\) per cui dividi per ottenere i resti con cui lavori. Su un quadrante di orologio è il numero di tacche di un giro completo. «Modulo 12» è l’abbreviazione di «guardando i resti della divisione per 12». |
| congruente | Due numeri interi sono congruenti modulo \(n\) quando hanno lo stesso resto nella divisione per \(n\). È un termine che riguarda i numeri interi, diverso dalle figure congruenti della geometria (stessa forma e stessa misura). |
| congruenza | Un’affermazione della forma \(a \equiv b \pmod{n}\). Le congruenze si possono sommare, sottrarre e moltiplicare proprio come le uguaglianze, quindi i problemi sui resti si risolvono riscrivendo. È uno strumento di base della teoria dei numeri, usato nelle gare di matematica e nell’informatica. |
| multiplo | Un numero che si ottiene moltiplicando un numero intero per un altro numero intero. «La differenza è un multiplo del modulo» è la definizione di congruenza. |
| divisione per difetto | Un modo di dividere che arrotonda il quoziente per difetto, al numero intero più piccolo. Quando il divisore è positivo, il resto è 0 o più anche per un dividendo negativo. L’operatore // di Python e la funzione INT di Excel funzionano così. |
| operatore modulo | L’operatore % che trova un resto in programmazione. C, Java e JavaScript arrotondano il quoziente verso 0 (il resto ha il segno del dividendo). Python e Ruby usano la divisione per difetto (il resto ha il segno del divisore, quindi è 0 o più quando il modulo è positivo). |
| metodo dei quadrati ripetuti | Un modo per trovare il resto di una potenza enorme con poche moltiplicazioni: si eleva al quadrato più volte prendendo il resto, si scompone l’esponente in una somma di potenze di 2 e si moltiplicano i pezzi. Si chiama anche elevamento a potenza per quadrati successivi (in inglese square-and-multiply) e si usa, tra le altre cose, nelle implementazioni della crittografia RSA. |
| classe di resto | L’idea di raggruppare i numeri interi in base al loro resto nella divisione per \(n\). Nel mondo di mod \(n\) ogni numero intero cade in uno degli \(n\) gruppi, con resto da \(0\) a \(n-1\). I numeri pari e dispari sono il raggruppamento per resto nella divisione per 2. |
| periodicità | Il modo in cui i resti delle potenze ripetono lo stesso schema. Ci sono solo \(n\) possibili resti, quindi devono tornare a uno già avuto. Trovare il ciclo nei problemi sull’ultima cifra (mod 10) è un classico delle gare di matematica. |
| primi tra loro | Due numeri interi sono primi tra loro (o coprimi) quando il loro massimo comun divisore è 1. Compare nella condizione per dividere entrambi i lati di una congruenza per lo stesso numero. |
Cosa conviene sapere prima
Ecco cosa ti aiuta a usare il calcolo di questa pagina capendo davvero che cosa stai facendo, e non solo premendo il pulsante.
Se ti blocchi, ripassare questi argomenti è la via più rapida.
| Divisione con resto (classi 3ª–4ª della primaria, 8-10 anni) |
|
| Multipli e divisori (classe 5ª della primaria – classe 1ª della secondaria di primo grado, 10-12 anni) |
|
| Numeri relativi, cioè positivi e negativi (classe 2ª della secondaria di primo grado, 12-13 anni) |
|
| Potenze ed esponenti (classe 1ª della secondaria di primo grado – biennio della secondaria di secondo grado, 11-16 anni) |
|
| La divisione tra numeri interi (scuola secondaria di secondo grado) |
|
Come calcolarlo con Excel
| Dividendo a | -7 |
| Modulo (divisore) n | 3 |
| Resto matematico (0 o più) | =RESTO(B1;B2) |
| Quoziente (divisione per difetto) | =INT(B1/B2) |
| Verifica n × quoziente + resto | =B2*B4+B3 |
| Resto in stile C/Java (arrotondato verso 0) | =B1-B2*TRONCA(B1/B2) |
| Numero intero a | 38 |
| Numero intero b | 14 |
| Modulo n | 12 |
| Differenza a − b | =B1-B2 |
| Resto della differenza ÷ n | =RESTO(B4;B3) |
| Risultato (VERO = congruenti) | =RESTO(B4;B3)=0 |
| Base a | 7 |
| Esponente k | 100 |
| Modulo n | 13 |
| Resto di a^1 | =RESTO(B1;B3) |
| Resto di a^2 (elevare al quadrato la riga sopra e prendere il resto) | =RESTO(B4^2;$B$3) |
| Resto di a^4 | =RESTO(B5^2;$B$3) |
| Resto di a^8 | =RESTO(B6^2;$B$3) |
| Resto di a^16 | =RESTO(B7^2;$B$3) |
| Resto di a^32 | =RESTO(B8^2;$B$3) |
| Resto di a^64 | =RESTO(B9^2;$B$3) |
| Resto combinato per 100 = 64 + 32 + 4 | =RESTO(RESTO(B10*B9;$B$3)*B6;$B$3) |
La funzione RESTO di Excel restituisce lo stesso «resto matematico» (0 o più) di questa calcolatrice. Anche per i numeri negativi, =RESTO(-7;3) dà 2. Se ti serve il resto in stile C/Java, usa l’ultima riga della prima tabella, che usa TRONCA per arrotondare il quoziente verso 0.
La prima tabella divide −7 per 3: il resto è 2 e il quoziente è −3.
La seconda tabella controlla 38 ≡ 14 (mod 12). Il resto della differenza 24 è 0, quindi mostra VERO (congruenti).
La terza tabella trova il resto di 7 alla 100 diviso 13 con il metodo dei quadrati ripetuti. La risposta è 9. «^» è il segno della potenza. Excel tratta in modo esatto solo circa 15 cifre, quindi quando il modulo n ha più di 7 cifre i quadrati perdono precisione. In quel caso usa la calcolatrice di questa pagina oppure Python.
Come calcolarlo con Fogli Google
| Dividendo a | -7 |
| Modulo (divisore) n | 3 |
| Resto matematico (0 o più) | =RESTO(B1;B2) |
| Quoziente (divisione per difetto) | =INT(B1/B2) |
| Verifica n × quoziente + resto | =B2*B4+B3 |
| Resto in stile C/Java (arrotondato verso 0) | =B1-B2*TRONCA(B1/B2) |
| Numero intero a | 38 |
| Numero intero b | 14 |
| Modulo n | 12 |
| Differenza a − b | =B1-B2 |
| Resto della differenza ÷ n | =RESTO(B4;B3) |
| Risultato (VERO = congruenti) | =RESTO(B4;B3)=0 |
| Base a | 7 |
| Esponente k | 100 |
| Modulo n | 13 |
| Resto di a^1 | =RESTO(B1;B3) |
| Resto di a^2 (elevare al quadrato la riga sopra e prendere il resto) | =RESTO(B4^2;$B$3) |
| Resto di a^4 | =RESTO(B5^2;$B$3) |
| Resto di a^8 | =RESTO(B6^2;$B$3) |
| Resto di a^16 | =RESTO(B7^2;$B$3) |
| Resto di a^32 | =RESTO(B8^2;$B$3) |
| Resto di a^64 | =RESTO(B9^2;$B$3) |
| Resto combinato per 100 = 64 + 32 + 4 | =RESTO(RESTO(B10*B9;$B$3)*B6;$B$3) |
Come calcolarlo con Python
a = -7
n = 3
# il % di Python restituisce lo stesso «resto matematico» di questa calcolatrice (0 o più quando il modulo è positivo)
print(a % n) # 2
# divmod restituisce insieme il quoziente per difetto e il resto (a = n × quoziente + resto)
quotient, remainder = divmod(a, n)
print(quotient, remainder) # -3 2
# verifica di congruenza: vale 38 ≡ 14 (mod 12)? (si controlla se la differenza è un multiplo di 12)
print((38 - 14) % 12 == 0) # True
# potenza modulare: resto di 7 alla 100 diviso 13
# pow con 3 argomenti usa il metodo dei quadrati ripetuti, quindi termina all’istante anche con esponenti enormi
print(pow(7, 100, 13)) # 9
def c_style_mod(x, m):
# stesso risultato di % in C, Java e JavaScript (quoziente arrotondato verso 0)
r = x % m
if r != 0 and x < 0:
r -= m
return r
print(c_style_mod(-7, 3)) # -1
La formula in LaTeX e in altre notazioni matematiche (da copiare)
a = n × q + r (0 ≤ r < n)
a = nq + r \quad (0 \le r < n)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>a</mi><mo>=</mo><mi>n</mi><mi>q</mi><mo>+</mo><mi>r</mi>
<mo>,</mo>
<mn>0</mn><mo>≤</mo><mi>r</mi><mo><</mo><mi>n</mi>
</mrow>
</math>
a = n q + r, \ 0 <= r < n
{Quotient[a, n], Mod[a, n]}
q := floor(a/n); r := a mod n;
q = floor(a/n); r = mod(a, n);
a = nq + r (0 ≤ r < n)
a ≡ b (mod n) ⇔ a − b = n × m
a \equiv b \pmod{n} \iff a - b = nm
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>a</mi><mo>≡</mo><mi>b</mi>
<mspace width="0.3em"/>
<mo>(</mo><mi>mod</mi><mspace width="0.3em"/><mi>n</mi><mo>)</mo>
<mo>⇔</mo>
<mi>a</mi><mo>−</mo><mi>b</mi><mo>=</mo><mi>n</mi><mi>m</mi>
</mrow>
</math>
a -= b (mod n) iff a - b = n m
Mod[a - b, n] == 0
(a - b) mod n = 0;
mod(a - b, n) == 0
a ≡ b (mod n)
(a × b) mod n = {(a mod n) × (b mod n)} mod n
(a \times b) \bmod n = \{(a \bmod n)(b \bmod n)\} \bmod n
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mo>(</mo><mi>a</mi><mo>×</mo><mi>b</mi><mo>)</mo>
<mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>n</mi>
<mo>=</mo>
<mo>{</mo>
<mo>(</mo><mi>a</mi><mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>n</mi><mo>)</mo>
<mo>×</mo>
<mo>(</mo><mi>b</mi><mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>n</mi><mo>)</mo>
<mo>}</mo>
<mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>n</mi>
</mrow>
</math>
(a * b) mod n = ((a mod n) * (b mod n)) mod n
Mod[a b, n] == Mod[Mod[a, n] Mod[b, n], n]
(a * b) mod n = ((a mod n) * (b mod n)) mod n;
mod(a*b, n) == mod(mod(a, n)*mod(b, n), n)
(a×b) mod n = ((a mod n)×(b mod n)) mod n
a ≡ b, c ≡ d (mod n) ⇒ a+c ≡ b+d, a−c ≡ b−d, a×c ≡ b×d (mod n)
a \equiv b,\ c \equiv d \pmod{n} \Rightarrow a + c \equiv b + d,\ a - c \equiv b - d,\ ac \equiv bd \pmod{n}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>a</mi><mo>+</mo><mi>c</mi><mo>≡</mo><mi>b</mi><mo>+</mo><mi>d</mi>
<mo>,</mo>
<mi>a</mi><mo>−</mo><mi>c</mi><mo>≡</mo><mi>b</mi><mo>−</mo><mi>d</mi>
<mo>,</mo>
<mi>a</mi><mi>c</mi><mo>≡</mo><mi>b</mi><mi>d</mi>
<mspace width="0.3em"/>
<mo>(</mo><mi>mod</mi><mspace width="0.3em"/><mi>n</mi><mo>)</mo>
</mrow>
</math>
a + c -= b + d, \ a - c -= b - d, \ a c -= b d (mod n)
Mod[a + c, n] == Mod[b + d, n] && Mod[a - c, n] == Mod[b - d, n] && Mod[a c, n] == Mod[b d, n]
(a + c) mod n = (b + d) mod n;
mod(a + c, n) == mod(b + d, n)
a + c ≡ b + d (mod n)
Come chiedere a ChatGPT di fare il calcolo
Sei un assistente per il calcolo di matematica (proprietà dei numeri interi). Esegui il calcolo seguente eseguendo davvero del codice Python e basa la risposta solo sui numeri ottenuti dall’esecuzione (non rispondere a mente né a stima). Calcola i 3 problemi seguenti. 1. Il resto matematico di −7 diviso 3 (scelto maggiore o uguale a 0) e il quoziente 2. Se vale 38 ≡ 14 (mod 12) (mostra anche se la differenza è un multiplo di 12) 3. Il resto di 7 alla 100 diviso 13 (usa pow(7, 100, 13)) Usa %, divmod e pow(base, esponente, modulo) di Python e mostra le formule usate e i numeri ottenuti dall’esecuzione.
Come si usa
-
1Inserisci i numeriScrivi nei campi i numeri con cui vuoi fare il calcolo
-
2CalcolaFai clic sul pulsante «Calcola»
-
3Guarda il risultatoIl risultato compare subito. Nella stessa pagina trovi anche lo svolgimento del calcolo e la spiegazione della formula
I punti di forza di DataChef
Nessuna competenza richiesta, semplice e intuitivo
Nessun dato personale richiesto
Il file viene eliminato automaticamente dopo il download
Nessun obbligo di attribuzione
Nessuna autorizzazione preventiva necessaria