Quel jour de la semaine êtes-vous né(e) ? Par quel jour de la semaine commencera-t-on le prochain millénaire ?

Ce petit programme permet de répondre à ces questions :

Entrez une date (par exemple, pour 27 décembre 1999, entrez 27, 12 et 1999) :

JourMoisAnnée

Comment ça marche ?

Le programme utilise une jolie formule pour trouver le jour de la semaine correspondant à une date donnée.

Il calcule d'abord les valeurs c, a et m. (Attention, dans toutes les divisions "/", on ne garde que la partie entière du résultat. Par exemple, 35/4= 8.)

c = (14 - mois)/12 (où "mois" est le numéro du mois dans l'année : 1 pour janvier, 2 pour février, etc.)
En fait, c = 1 pour janvier et février, c = 0 sinon.

a = année - c   (où "année" est donné avec tous les chiffres)

m = mois + 12c - 2

Enfin, on utilise :

j = ( jour + a + a/4 - a/100 + a/400 + 31m/12 ) mod 7

où mod 7 signifie modulo la division par 7, c'est-à-dire que le résultat est le reste de la division par 7. (Par exemple, 23 mod 7 = 2, car le reste est 2.)

La réponse obtenue pour j correspond alors à un jour de la semaine suivant :
0 = dimanche, 1 = lundi, 2 = mardi, etc.

Exemple

Sur quel jour de la semaine tombait le 13 mars 2004 ?

On calcule c, a et m :
c = (14 - 3)/12 = 0,      a = 2004 - 0 = 2004     et     m = 3 + 12(0) - 2 = 1.

On trouve alors :

j = ( 13 + 2004 + 2004/4 - 2004/100 + 2004/400 + 31(1)/12 ) mod 7
j = ( 13 + 2004 + 501 - 20 + 5 + 2 ) mod 7
j = 2505 mod 7 = 6 (car 2505/7 = 357 et il reste 6.)

Donc le 13 mars 2004 était un samedi.

Attention

La formule n'est pas valable pour les dates antérieures à 1583 (pour la France) à cause du passage du calendrier Julien au calendrier Grégorien que nous utilisons aujourd'hui.

En effet, le calendrier pour le mois de décembre 1582 présente un "trou" de 10 jours entre le 9 et le 20 décembre.