Trouver le jour de la semaine correspondant à une date grâce au calcul mental

Calcul du jour de la semaine :

1) La technique

Vous avez déjà été bluffé par un autiste où autre surdoué qui à la télévision arrivait à trouver le jour de la semaine sur lequel tombait n'importe quelle date en très peu de temps ? En réalité il n'est pas si difficile de réaliser cet « exploit », il suffit de s'entraîner un petit peu en calcul mental et appliquer un algorithme qu'un ami et moi avons inventé. Même si il semble long en apparence, il s'applique assez rapidement avec l'habitude (dans cet algorithme le signe $ \% $ qui se lit « modulo » est une opération qui renvoie le reste de la division euclidienne par un certain nombre, ici en l'occurence $7$, par exemple $10 \% 7=3$ car $10= 7 \times 1 +3$ ou $26 \% 7=5$ car $26= 7 \times 3 +5$) :

$$ J = (\textrm{jour} \%7 + \textrm{mois*} +\textrm{année} \% 7 \textrm{**} + (\textrm{année}/4) \%7 \textrm{**} + \textrm{siècle}\textrm{****}) \% 7 \textrm{***} $$

* janvier $= 0$, février $= 3$, mars $= 3$, avril $= 6$, mai $= 1$, juin $= 4$, juillet $= 6$, août $= 2$, septembre $= 5$, octobre $= 0$, novembre $= 3$, décembre $= 5$

** seulement les deux derniers chiffres de l'année

*** $-1$ si on est à la fois en janvier ou février et dans une année bissextile.

**** $1600 = 6$, $1700 = 4$, $1800 = 2$, $1900 = 0$, $2000 = 6$, $2100 = 4$, etc.

 

Voici un exemple avec le $25$ décembre $2016$ :

$$J = (25 \% 7 + 5 + 16 \% 7 + (16/4) \% 7 + 6) \% 7$$

 $$J = ( 4 + 5 + 2 + 4 + 6) \% 7 = 21 \% 7 = 0 $$

, ce qui veut dire que cette année nous fêterons noël un Dimanche !

A vous d'essayer !

2) Un peu de théorie :

Vous avez maintenant la formule pour calculer sur quel jour tombe n'importe quelle date du calendrier. Toutefois pourquoi cette formule ?

       a) Le calendrier grégorien

Tout d'abord, quelques précisions sur le calendrier gréogorien : c'est celui que nous utilisons aujourd'hui. Il a été introduit à la fin du XVIème siècle pour mieux approximer la durée de rotation de la terre autour du soleil.

Effectivement, figurez vous que la Terre ne s'est jamais dit "Et si je tournais autour du Soleil en un nombre entier de jours, ce serait génial! Comme ça les futurs humains qui vivront sur moi pourront faire des calendriers très simples dans lesquels chaque année il y aura un même nombre de jours."

La vérité est un peu plus sombre, la Terre fait une rotation autour du Soleil pour revenir exactement dans la même configuration (c'est la définition d'une année) en approximativement $365.2422$ jours de précisément $24h$. Et ça c'est pas cool si on veut faire un calendrier simple, parce que les $0.2422$ restant après nos $365$ jours habituels, ca fait pas un jour entier du tout! Cela a l'effet suivant : si chaque année on ne comptait que $365$ jours, au bout de $100$ ans le jour le plus long de l'année en France, qui est actuellement le $21$ juin en général, se retrouverai $24$ jours plus tôt, soit en mai. Mais comme on tient un peu à la régularité de notre calendrier cela serait inacceptable.

Du coup, depuis le temps des Romains et notamment l'illustre Jules César, on a prit l'habitude de rajouter un jour de temps en temps pour compenser ce décalage. C'est ce dernier qui a eu l'idée de rajouter un jour tout les $4$ ans en février. A l'époque on rajoutait une sorte de $23$ février bis entre le $23$ et le $24$, on comptait donc double le $6$ème jour avant le mois de mars, vous comprenez ainsi l'appelation bis|sextile qui datent donc de l'empire romain! Ainsi si l'on rajoute un jour tout les $4$ ans, cela revient au même que d'avoir rajouté un quart de jour chaque année, et un quart en écriture décimale ça vaut $0.25$, cela donne donc une durée moyenne de $365.25$ jours pour une année. C'est pas trop mal déjà, ça colle mieux à $365.2422$. Avec ce système, tous les $100$ ans nous n'observerions qu'un décalage d'une journée.

C 'est pas beaucoup, certes,  mais ça a suffit pour que le Pape Grégoire XIII ne soit pas content que depuis la dernière modification de Jules César, les dates des fêtes religieuses dérivent lentement et ne se retrouvent pas au même moment de la saison. Effectivement étant donné que l'on a approximé durant tout ce temps une année qui dure sensément $365.2422$ jours par une année d'en moyenne $365.25$ jours, on a compté $10$ jours de trop! Le pape à donc supprimé dix jours du calendrier en $1582$, et en a profité pour instaurer une nouvelle régle pour les années bissextiles. Il s'est dit : "Si on compte trop, il suffit de ne pas compter certaines des années années bissextiles pour compenser, aller tiens je vais dire que tous les $100$ ans on ne compte pas l'année bissextile qu'il devrait y avoir, ce sera donc une année normale" ! Alors sur $100$ ans, au lieu d'il y avoir $100/4 = 25$ années bissextiles, étant donné qu'on en enlève une, il n'y en a plus que $24$, ce qui nous donne désormais une moyenne de $365.24$ jours pour une année.

Mais alors le Pape s'est dit : "Tiens on commence à être pas mal, mais on est encore un peu trop en dessous de la valeur réelle, alors tant qu'à faire quitte à créer un nouveau calendrier je vais faire ça bien histoire que dans $1000$ ans on ne soit pas obligé de rechanger mon calendrier.". Notre valeur moyenne de l'année avec une année bissextile tout les $4$ ans mais que l'on ne considère pas une fois tous les $100$ ans étant inférieure à la valeur réelle, le Pape a proposé de garder très rarement une année bissextile alors que sensément on aurait du ne pas la compter : une fois tout les $400$ ans. En $400$ ans on a donc $400/4=100$ années bissextiles initialement, mais on en enlève $4$ à cause de la règle des $100$ ans, ce qui donne $96$ années bissextilles, mais on en garde tout de même une supplémentaire à cause de la régle des $400$ ans. Le total se porte donc à $97$ années bissextiles en $400$ ans. On a donc ajouter $97$ jours dans cette période, ce qui revient à rajouter $97/400 = 0.2425$ jours par an en moyenne. Une année dure donc en moyenne, dans le calendrier actuel introduit en $1582$, exactement $365.2425$ jours.

Après toutes ces péripéties on a donc une durée moyenne d'année de $365.2425$ jours de $24h$ par an avec ce "nouveau" calendrier, ce qui est très proche de la valeur réelle qui elle vaut $365.2422$, soit une différence de $3$ dix-millièmes d'erreur, ce qui conduirait à un écart de $3$ jours sur $10 000$ ans, pas mal non?

       b) Etablissement de la formule

Pourquoi tant d'explications sur notre calendrier ? Tout simplement parce que vous imaginez bien que nous avons utilisé les propriétés de celui-ci pour établir notre formule! Et puis c'est sympa pour la culture aussi.

Alors, la première question est la suivante : que prend-t-on comme date de référence ? Et oui il faut tout d'abord prendre une vraie date (dans notre calendrier) pour ensuite pouvoir faire des calculs. Nous avons choisis le $1$ janvier $1900$, pourquoi ? Parce que c'est le premier jour d'un siècle, et qu'il tombe un lundi. Ce choix est donc un choix pratique mais on aurait pu prendre une tout autre date!

On se place en janvier $1900$, si l'on est le $25$ par exemple, quel est le jour de la semaine correspondant ? Facile, le premier est un lundi, donc $3$ semaines plus tard, soit le $22$, nous serons également un lundi, ensuite il faut compter $3$ jours pour arriver à $25$ et donc $3$ jours à lundi, ce qui veut dire que le $25$ janvier $1900$ était un jeudi. Une autre manière de faire plus habile est d'utiliser l'opération "modulo" que l'on a déjà introduit et qui se note $ \%$ en langage informatique. On va alors prendre le reste de la division du numéro du jour par $7$ : $25 \% 7 = 4$ car $25 = 7 \times 3 + 4$. Le $4$ème jour de la semaine est jeudi. Cela concorde. 

La partie due au numéro de la journée en question dans notre formule s'exprime donc $ \textrm{jour} \% 7$.

Viens ensuite le problème des mois. Le mois de janvier possède $31$ jours, soit $4$ semaines de $7$ jours plus $3$ jours. Le premier février se trouvera alors être un jeudi et non un lundi comme en janvier. Tous les jours de février seront alors décalé de $3$ : le $25$ février par exemple tombera un dimanche car le $25$ janvier était un jeudi : $4 \textrm{(jeudi)} + 3 = 7$.On attribut alors au mois de février le code $3$. Février comporte $28$ jours, soit pile $4$ semaines. Comme il n'y a pas de jour supplémentaire, février n'introduira pas de décalage sur mars, toutefois les $3$ jours de décalage du à janvier sont toujours présents. Le code de mars est donc $3$, comme celui de février. Mars possède $31$ jours, soit $4$ semaines plus $3$ jours, il introduira donc sur avril un décalage de $3$ jours supplémentaires, le code d'avril sera alors $3+3 = 6$. Comme avril à $30$ jours, donc $4$ semaines et $2$ jours, il introduira $2$ jours de décalage en plus, le code de mai sera alors $6+2 = 8$. Toutefois $8$ jours de décalage, c'est comme une semaine et un jour, or une semaine de décalage n'affecte pas le jour de la semaine que l'on est. Donc finalement on peut dire que le code de mai est $1$. Bon maintenant vous avez compris le principe, alors je vous redonne le code de tous les mois, vous pourrez vérifier les codes des mois après mai maintenant que vous avez saisi la technique.

Janvier $= 0$, février $= 3$, mars $= 3$, avril $= 6$, mai $= 1$, juin $= 4$, juillet $= 6$, août $= 2$, septembre $= 5$, octobre $= 0$, novembre $= 3$, décembre $= 5$.

On devra alors ajouter au $ \textrm{jour} \% 7$ de la formule le code du mois dans lequel on se situe. 

Par exemple pour le $12$ novembre $1900$, on fait $12 \% 7 + 3 = 5 + 3 = 8$, or toujours pour les même raisons, $8$ jours de décalage lorsque l'on calcule le jour de la semaine, c'est comme si l'on en considère qu'$1$ puisque une semaine complète d'introduit pas de décalage. Pour simplifier on peut alors appliquer un $ \% 7$ sur l'opération pour supprimer les semaines complètes : $(12 \% 7 + 3) \% 7 = (5 + 3) \% 7 = 8 \% 7 = 1$. Le $12$ novembre $1900$ était donc un lundi. 

Bon nous avons une formule pour calculer rapidement sur quel jour de la semaine tombe n'importe quelle date de $1900$. C'est bien, mais avouez que c'est un peu restreint quand même. Alors maintenant on veut prendre l'année en compte, pour cela nous ne regardons que les deux derniers chiffres : pour $1947$ on ne s'intéresse qu'à $47$. Pour prendre en compte l'année il faut calculer deux choses : le décalage du à une année, et le décalage supplémentaire d'un jour du à une année bissextile. Premièrement, une année de $365$ jours, c'est $52$ semaines plus $1$ jour, donc une année introduit un décalage de $1$ jour. Le $1$ janvier $1901$ sera donc un mardi. Il suffit alors de regarder combien d'année se sont passer depuis $1900$. En $1947$ il y en a eu $47$, donc $47$ jours de décalage. Mais comme on veut connaître le décalage sur les jours de la semaine, on introduit le légendaire $\% 7$ pour supprimer les semaines complètes : $47 \% 7 = 5$ (car $47 = 6 \times 7 + 5$), le $1$er janvier $1947$ serait donc un vendredi, si les années bissextiles n'existait pas! 

Toutefois elles existent, et il faut les prendre en compte. On doit en compter une tout les $4$ ans, donc il suffit de regarder le multiple de $4$ le plus proche et en dessous des deux derniers chiffres de l'année qui nous intéresse, et le diviser par $4$ pour avoir le nombre d'années bissextiles qu'il s'est produit. Pour $1947$ par exemple, on prend $47$, le multiple de $4$ le plus proche et en dessous de $47$ est $44$, on garde $44$ et on le divise par $4$ : cela donne $11$. Les $11$ années bissextiles qu'il y a eu entre $1900$ et $1947$ introduisent donc $11$ jours de décalage supplémentaires à cause du $29$ février, ce qui revient à $11 \% 7 = 4$ jours de décalage en jours de la semaine.

Donc finalement en $1947$ il faut compter $5$ jours de décalages dus aux années de $365$ jours, et $4$ jours de décalage supplémentaires dus aux années bissextiles de $366$ jours. Soit $9$ jours au total qui sont équivalent à $2$ ($9 \% 7 = 2$).

Donc en réalité le $1$er janvier $1947$ était un mercredi : $1 + 0 + 2 = 3$.

La formule est donc désormais : 

$$ J = (\textrm{jour} \%7 + \textrm{mois*} +\textrm{année} \% 7 \textrm{**} + (\textrm{année}/4) \%7 \textrm{**}) \% 7 $$

* janvier $= 0$, février $= 3$, mars $= 3$, avril $= 6$, mai $= 1$, juin $= 4$, juillet $= 6$, août $= 2$, septembre $= 5$, octobre $= 0$, novembre $= 3$, décembre $= 5$

** seulement les deux derniers chiffres de l'année

Toutefois il faut faire gaffe à quelque chose si on est dans une année bissextile, et que la date demandée est en janvier ou février. Effectivement notre formule prend en compte toutes les années bissextiles y compris celle en cours. Cela pose un problème car si on est dans la situation présentée précédement, on compte le jour de décalage du au $29$ février alors qu'il n'a pas encore eu lieu. Pour pallier à ce problème, il faut rajouter $-1$ au résultat final.

Exemple : $19$ février $1980$ : $1980$ est une année bissextile est nous sommes en février

               $$ J = (19 \% 7 + 3 + 80 \% 7 + (80/4) \% 7) \% 7 - 1 $$

                 $$ J = (5 + 3 + 3 + 6) \% 7 -1 $$

                $$ J = 17 \% 7 - 1 = 3 - 1 = 2 $$

Le $19$ février $1980$ était donc un mardi.

Nous ajoutons alors une astérisque *** pour mettre en garde contre cette situation facheuse : 

$$ J = (\textrm{jour} \%7 + \textrm{mois*} +\textrm{année} \% 7 \textrm{**} + (\textrm{année}/4) \%7 \textrm{**}) \% 7 \textrm{***} $$

* janvier $= 0$, février $= 3$, mars $= 3$, avril $= 6$, mai $= 1$, juin $= 4$, juillet $= 6$, août $= 2$, septembre $= 5$, octobre $= 0$, novembre $= 3$, décembre $= 5$

** seulement les deux derniers chiffres de l'année

*** $-1$ si on est à la fois en janvier ou février et dans une année bissextile.

Rappelez vous que pour savoir si une année est bissextile ou non on regarde si les deux derniers chiffres sont un multiple de $$4 mais pas $00$, si c'est le cas l'année est bissextile. Si l'année est un centenaire : $1700$, $1800$, $1900$ ... cela n'en est pas une, à moins que l'année soit un multiple de $400$ : $1600$, $2000$, ... et dans ce cas elle en est une. C'est assez compliqué à première vue mais quand on connait la règle ça devient assez simple.

On peut donc désormais trouver à quel jour correspond n'importe quelle date du XXème siècle (années $19xx$). Toutefois pour être enfin capable de donner le jour d'une date tirée au hasard, aujourd'hui comme dans $3000$ ans, il faut ajouter une dernière petite partie due au siècle dans lequel on se trouve dans notre formule. Pour cela il suffit de regarder quel jour tombe le $1$er janvier du centenaire et enlever $1$ (la partie due au $1$er janvier):

$1$er janvier $1700$ : vendredi, le code des années $1900$ est donc $4$.

$1$er janvier $1800$ : mercredi, le code des années $1900$ est donc $2$.

$1$er janvier $1900$ : lundi, le code des années $1900$ est donc $0$.

Petite subtilité ==> $1$er janvier $2000$ : samedi, donc le code des années $2000$ devrait être $5$, toutefois un $-1$ apparaît dans la formule puisque $2000$ est une année bissextile (multiple de $400$) et que l'on est en janvier. Il faut donc rajouter $1$ au code du siècle pour compenser ce $-1$. Le code des années $2000$ est donc $6$.

Le calendrier revient exactement au point initial tout les $400$ ans, du coup le code de $1700$ qui vaut $4$ est aussi le code de $2100$, $2500$, et même $9700$.

On obtient alors la formule finale : 

$$ J = (\textrm{jour} \%7 + \textrm{mois*} +\textrm{année} \% 7 \textrm{**} + (\textrm{année}/4) \%7 \textrm{**} + \textrm{siècle}\textrm{****}) \% 7 \textrm{***} $$

* janvier $= 0$, février $= 3$, mars $= 3$, avril $= 6$, mai $= 1$, juin $= 4$, juillet $= 6$, août $= 2$, septembre $= 5$, octobre $= 0$, novembre $= 3$, décembre $= 5$

** seulement les deux derniers chiffres de l'année

*** $-1$ si on est à la fois en janvier ou février et dans une année bissextile.

**** $1600 = 6$, $1700 = 4$, $1800 = 2$, $1900 = 0$, $2000 = 6$, $2100 = 4$, etc.

 

blog calcul mental cours astuce

Ajouter un commentaire

Code incorrect ! Essayez à nouveau