Bonjour à tous
Quelques remarques :
L'algorithme de Mike Keith n’est valable que dans le calendrier grégorien à partir du 15/10/1582
Car dans ce calendrier il n’existe pas de date entre le 04/10/1582 et le 15/10/1582
L’algo en trouve !!!!
Autre remarque le 01/01/01 est toujours un dimanche
L’algo me donne un Lundi !!!
Algorithme de Mike Keith
Algorithme
Dans un article publié en 1990 dans le Journal of Recrational Mathematics, Vol. 22, No. 4, 1990, p. 280, Mike Keith propose un algorithme pour la détermination du jour de la semaine correspondant à une date quelconque. Sa formule, inspirée de la congruence de Zeller et traduite en seulement 45 caractères précise-t-il, est la suivante :
(d+=m<3?y--:y-2, 23*m/9 + d + 4 + y/4 -y/100 + y/400) ÷ 7
Mike Keith déclare lui-même qu'il s'agit là de la " plus simple formule possible " pour le calcul du jour de la semaine, " la meilleure qui puisse être construite ", ajoute-t-il. Dans sa forme opérationnelle, son algorithme s'écrit :
Jour de semaine D = { [(23m)/9] + d + 4 + y + [z/4] - [z/100] + [z/400] - 2 (si m >= 3) } mod 7
où:
D = Jour de semaine (D = 0 à 6; 0 = Dimanche, 1 = Lundi, ... , 6 = Samedi)
[x] signifie le nombre entier résultant de la division, le reste étant ignoré
m = Mois (m = 1 à 12; 1 = Janvier, 2 = Février, 3 = Mars, ... , 12 = Décembre) m >= 3 signifie m supérieur ou égal à 3
d = Jour (d = 1 à 31)
y = année
z = y - 1 si m < 3
z = y si m >= 3
Modulo 7 ou mod 7 = reste de la division par 7
Exemples
1er cas : m < 3
Le 18 janvier 1953 tombait quel jour de la semaine?
d = 18, m = 1, y = 1953 et z = y-1 = 1952; d'où
D = { [(23x1)/9] + 18 + 4 + 1953 + [1952/4] - [1952/100] + [1952/400] } mod 7
D = (2 + 18 + 4 + 1953 + 488 - 19 + 4) mod 7
D = 2450 mod 7 = 0 car 2450 = 7 x 350 + 0
18 janvier 1953 = un Dimanche
2eme cas : m > 3
Le 2 août 1953 tombait quel jour de la semaine?
d = 2, m = 8, y = 1953 et z = y = 1953; d'où
D = { [(23x8)/9] + 2 + 4 + 1953 + [1953/4] - [1953/100] + [1953/400] - 2 } mod 7
D = (20 + 2 + 4 + 1953 + 488 - 19 + 4 - 2) mod 7
D = 2450 mod 7 = 0 car 2450 = 7 x 350 + 0
2 août 1953 = un Dimanche
3eme cas : m = 3
Le 13 mars 1998 tombait quel jour de la semaine?
d = 13, m = 3, y = 1998 et z = y = 1998; d'où
D = { [(23x3)/9] + 13 + 4 + 1998 + [1998/4] - [1998/100] + [1998/400] - 2 } mod 7
D = (7 + 13 + 4 + 1998 + 499 - 19 + 4 - 2) mod 7
D = 2504 mod 7 = 5 car 2504 = 7 x 357 + 5
13 mars 1998 = un Vendredi 13 !!!
Au besoin, le lecteur pourrait vérifier ses résultats de calcul du jour de la semaine au moyen de notre Calendrier pratique, du Calendrier permanent ou du Calendrier perpétuel à 12 mois.
@+