Aritmetica modulare in C#: resto, orologi e ciclicità

L’aritmetica modulare studia i resti delle divisioni tra numeri interi. È utile ogni volta che una quantità si ripete ciclicamente, come le ore di un orologio, i giorni della settimana o la distribuzione di oggetti in gruppi.

Divisione euclidea e resto

Per un intero a e un divisore positivo b esistono un quoziente intero q e un resto r tali che a = b * q + r, con 0 ≤ r < b. In C#, per gli interi non negativi, l’operatore % restituisce proprio quel resto.

abQuozienteResto
17532
24640
29741

Classi di resto

I numeri 1, 6, 11, 16, … hanno tutti resto 1 nella divisione per 5: appartengono alla stessa classe di resto modulo 5. Un numero intero non negativo è pari quando il resto modulo 2 è 0; è dispari quando è 1.

int numero = 27;
if (numero % 2 == 0)
{
    Console.WriteLine("Pari");
}
else
{
    Console.WriteLine("Dispari");
}

Esempio 1: orologio a 24 ore

Sono le 21:00 e passano 8 ore. La somma è 29, ma l’orologio torna a 5:00. In un sistema ciclico, il resto della divisione individua la posizione nel ciclo.

int oraIniziale = 21;
int oreTrascorse = 8;
int oraFinale = (oraIniziale + oreTrascorse) % 24;
Console.WriteLine(oraFinale); // 5

Esempio 2: scaffali con capienza fissa

Un negozio deve disporre 37 scatole in scaffali che contengono al massimo 8 scatole. La divisione intera fornisce gli scaffali pieni; il resto permette di sapere quante scatole rimangono.

int scatole = 37;
int capienza = 8;
int scaffaliPieni = scatole / capienza;
int residue = scatole % capienza;
int scaffaliNecessari = scaffaliPieni + (residue > 0 ? 1 : 0);
Console.WriteLine($"Pieni: {scaffaliPieni}, residue: {residue}");
Console.WriteLine($"Scaffali necessari: {scaffaliNecessari}");

Risultato: 4 scaffali pieni, 5 scatole residue, 5 scaffali in totale. Il problema combina divisione, resto e selezione.

Attenzione ai numeri negativi

In C#, il resto con operandi negativi segue il segno del dividendo: per esempio -1 % 24 restituisce -1, non 23. Per riportare un valore negativo nell’intervallo da 0 a 23 si può usare ((valore % 24) + 24) % 24.

Esercizi

  • Calcola il giorno della settimana dopo 45 giorni, rappresentando i giorni con numeri da 0 a 6.
  • Leggi un numero di persone e una capienza massima. Calcola quanti gruppi pieni e quanti posti residui risultano.
  • Verifica con una tabella quali numeri da 0 a 20 appartengono alla classe di resto 2 modulo 4.

Nel percorso: ← Operatori matematici · Indice del corso · Selezione →