In questo articolo vedremo come è possibile calcolare matematicamente il giorno della Pasqua cristiana. Useremo un semplice algoritmo che presuppone un minimo di conoscenza matematica, particolarmente della divisione di interi, del resto delle divisioni e dell’operatore modulo.
L’algoritmo può essere applicato a qualsiasi anno del calendario Gregoriano (entrato in vigore nel settembre del 1752).
Facciamo riferimento al numero dell’anno con la variabile y e la usiamo per calcolare il Golden number:
g = y mod 19 + 1
Dopodiché calcoliamo la luna piena Pasquale, il giorno di Pasqua coincide con la domenica successiva. Il procedimento viene fatto in diversi passaggi. Prima calcoliamo i due valori chiamati “correzione solare”, s, e “correzione lunare”, l.
s = (y - 1600) div 100 - (y - 1600) div 400 l = (((y - 1400) div 100) × 8) div 25
In seguito calcoliamo una data non corretta della luna piena Pasquale, p’ e poi applichiamo un fattore di correzione per ottenere la data esatta, p, come il numero di giorni dopo il 21 Marzo.
p' = (3 - 11g + s - l) mod 30 if (p == 29) or (p == 28 and g > 11) then p = p' - 1 else p = p'
Ora abbiamo bisogno di calcolare il giorno corrispondente alla Domenica successiva, prima calcoliamo il “Dominical number”, d:
d = (y + (y div 4) - (y div 100) + (y div 400)) mod 7
Notate che questo è il numero dal quale viene determinata la “Dominical letter”, ora calcoliamo d’, che sarebbe la data in cui capita la prima domenica dell’anno:
d' = (8 - d) mod 7
Già abbiamo p la data della luna piena Pasquale nei giorni dopo il 21 marzo. Ora andiamo a determinare p’’ la prima data dell’anno che capita nello stesso giorno della settimana della luna piena Pasquale. Prima determiniamo il “numero di giorno” di p rispetto al primo Gennaio. Con 31+28+31+p=80+p (Notare che possiamo ignorare la possibilità che febbraio abbia 29 giorni perché ci abbiamo già pensato nel calcolo di d dunque potremo vedere che questi due valori si cancellano a vicenda), p’’ è dato dalla formula:
p'' = (80 + p) mod 7 = (3 + p) mod 7
La differenza tra d’ (la prima domenica dell’anno) e p’’ (il giorno della settimana in cui capita la luna piena Pasquale) ci da il numero di giorni da aggiungere a p per ottenere la data della domenica successiva, che è il giorno di pasqua. C’è ancora un’altra condizione: questo numero deve essere compreso nell’intervallo 1-7 piuttosto che 0-6, dato che non è consentito che la Pasqua capiti proprio il giorno della luna piena.
Prima determiniamo x’, la differenza tra d’ e p’‘:
x' = d' - p'' = (8 - d) mod 7 - (3 + p) mod 7 = (8 - d - (3 + p)) mod 7 = (5 - d - p)) mod 7
Per fare in modo che il numero sia compreso tra 1 e 7, calcoliamo x
x = (x' - 1) mod 7 + 1 = (4 - d - p)) mod 7 + 1
Finalmente possiamo calcolare e il numero di giorni dopo il 21 Marzo in cui capita Pasqua:
e = p + x
oppure
e = p + 1 + (4 - d - p) mod 7
In altre parole il giorno di pasqua capita:
` if e < 11 then (e+21) Marzo else (e-10) Aprile `
Segue una versione ottimizzata delle tecniche qui sopra esposte. La procedura è stata utilizzata all’interno dell’utility sdg (Santo del Giorno). Il linguaggio di implementazione è il php ma con un minimo di conoscenza è possibile portare il codice sotto qualsiasi linguaggio di programmazione che dia la possibilità di effettuare calcoli semplici e scrivere stringhe.