Calculer le jour de la semaine de n'importe quelle date

Ou comment se faire passer pour un grand génie avec une méthode et un peu de calcul mental

Bon à l’heure de l’électronique, des téléphones avec des applications calendrier à tout bout de champ, on ne va pas se mentir, la méthode que je vais vous présenter, n’est pas la plus utile. Mais qui ne s’est pas déjà retrouvé pendant un examen à se demander la date du jour, la méthode peut s’avérer tout de même un peu utile.

Par contre s’il s’agit d’impressionner vos amis pour briller en société avec des "le débarquement de Normandie le 6 juin 44, hum, c’était un mardi" et bien cette méthode est faite pour vous.

Ce billet fait suite au poste d'une vidéo sur ma chaine youtube expliquant la méthode en question, mais dont certains retours fut une certaine incompréhension.

La méthode

Pour la simplifier la suite on va poser des variables.

J : La variable du jour de la date M : La variable du ième mois de la date A : La variable de l’année de la date

Ainsi la date s’écrit couramment J/M/A.

La méthode consiste à faire la somme du jour avec le nombre d’année depuis 1900 puis avec le nombre d’année bissextile depuis 1900 (en comptant celle en cours si la date est après le 29 février) et ensuite avec un coefficient dépendant du mois. Le tout modulo 7 pour avoir le numéro du jour de la semaine (0 pour dimanche).

(J+(A1900)+A19004+_M[M])%7\left(J + (A-1900) + \left\lfloor\frac{A-1900}{4}\right\rfloor + \_M[M]\right) \% 7

avec

_M=[0,3,3,6,1,4,6,2,5,0,3,5]\_M = [0,3,3,6,1,4,6,2,5,0,3,5]

Par exemple pour le 23/07/2020, on a (23 + 120 + 30 + 6)%7 = 179%7 = 4 donc un jeudi.

Explication

Le principe de cette méthode est de compter le décalage de jour depuis le 1ᵉʳ Janvier 1900 (qui est un lundi).

Pour chaque année on peut former des paquets de 7 jours à ne pas compter pour le décalage. Puisque une année contient 365 jours (52 semaines et 1 jour) on peut compter un décalage de 1 par année et de 2 pour les années bissextiles.

Une fois décalé au 1ᵉʳ janvier l’année voulue il faut se décaler au bon mois.

Si c’est en janvier, on y est déjà. Mais en février, les 31 jours de janvier sont passés (31 % 7 = 3) donc 3 jours de décalage. En mars on a les 3 jours de décalage de janvier + 28 jours de février donc 31 jours soit toujours 3 jours de décalage. En avril, on a les 3 jours de décalage de février + 31 jours de mars soit 34 jours (34 % 7 = 6) donc 6 jours de décalage. Et ainsi de suite jusqu’en décembre.

On obtient le tableau _M=[0,3,3,6,1,4,6,2,5,0,3,5]\_M = [0,3,3,6,1,4,6,2,5,0,3,5]

Plus qu’à considérer le décalage avec le jour voulu et on y est. On fait un dernier %7 pour avoir un résultat entre 0 et 6 et on a notre décalage depuis le lundi 1ᵉʳ Janvier 1900 et donc le ième jour de la semaine.


Merci d’avoir pris le temps de lire cet article. Je vous prie de bien briller en société grâce à cette méthode et de vous faire passer pour des génies à des télé-crochets.

Et n’hésitez pas à me demander votre jour de naissance ou autre, si on se croise à un JZDS.

17 commentaires

Deux remarques à propos de cette méthode :

  1. On peut l’étendre à tout le calendrier grégorien (y compris le futur) en ajoutant un code de « siècle » (en fait les deux premiers chiffres de l’année qui vaut :
    • 16xx : 6
    • 17xx : 4
    • 18xx : 2
    • 19xx : 0
    • 20xx : 6… et ainsi de suite (6 - 4 - 2 - 0 en boucle).
  2. Dans tous les cas je suis absolument incapable de calculer ce genre de truc de tête en un temps raisonnable.

Pas mal ! Mais dans la vraie vie personnellement je serais trop lent à calculer pour qu’on me considère vraiment comme un génie.

Attention toutefois, les années multiples de 100 qui ne sont pas également multiples de 400 ne sont pas bissextiles.

Question piège: quel jour était le 10 octobre 1582 ?

Enfin, on peut compléter utilement avec un petit truc pour calculer un peu plus rapidement n%7: prendre le nombre de centaines, multiplier par 2, et additionner aux dizaines/unités.

Par exemple pour 1234:

1234 % 7
= (12*2 +34) % 7
= 58%7
= 2

A noter que ça peut fonctionner aussi de façon récursive:

123456 % 7
= (1234*2 + 56) %7
= 2524 % 7
= (25*2 +24) % 7
= 74 % 7
= 4

Pourquoi ça marche ? Parce que 100%7=2. Ainsi x%7 c’est la même chose que (x%100 + 2*(x/100))%7.

Au passage, c’est encore plus simple pour n%11 puisque 100%11=1…

+2 -0

Ça ne change rien du tout à _M le problème ce passe avant avec A19004\frac{A-1900}{4} auquel il faudrait ajouter un coefficient.

À noter que le calcul mathématique et surtout la pour permettre de comprendre au gens qui sont habitué au formule de maths. Par exemple si on est une année bissextile après le 29 février, la partie mathématique n’est pas bonne.

+0 -0

Ah, donc il y a bien ce genre de détail, mais pas là où je le pensais.

Je me souviens que dans mon vieux livre de maths de l’école obligatoire, il y avait justement la formule, et de ce que je me souviens elle était bien plus compliquée, probablement justement qu’elle tenait compte de tout.

+0 -0

Bonjour,

Merci c’est très intéressant.

Une question néanmoins sur le modulo. Lorsque le résultat avant calcul du modulo n’est pas un nombre entier mais se termine par 0.5 ou 0.25 (en raison de la division par 4 pour tenir compte des années bissextiles) doit-on arrondir avant de calculer le modulo ? Si oui dans quel sens ?

Merci.

Bonjour,

Merci c’est très intéressant.

Une question néanmoins sur le modulo. Lorsque le résultat avant calcul du modulo n’est pas un nombre entier mais se termine par 0.5 ou 0.25 (en raison de la division par 4 pour tenir compte des années bissextiles) doit-on arrondir avant de calculer le modulo ? Si oui dans quel sens ?

Merci.

Memphis

Bonjour, oui les barres encadrant la division indique qu’il faut prendre la partie entière. Donc si tu obtiens 24.7524.75, tu gardes seulement 2424.

+0 -0

Bonjour,

Merci c’est très intéressant.

Une question néanmoins sur le modulo. Lorsque le résultat avant calcul du modulo n’est pas un nombre entier mais se termine par 0.5 ou 0.25 (en raison de la division par 4 pour tenir compte des années bissextiles) doit-on arrondir avant de calculer le modulo ? Si oui dans quel sens ?

Merci.

Memphis

Bonjour, oui les barres encadrant la division indique qu’il faut prendre la partie entière. Donc si tu obtiens 24.7524.75, tu gardes seulement 2424.

Melcore

Merci

179%7=4 Quel calcul avez-vous fait pour trouver 4 Je comprends pas. Merci

Ayingono

Le calcul est un modulo, c’est-à-dire le reste d’une division euclidienne. Si on souhaite diviser 179 par 7 on obtient 179=25×7+4179 = 25 \times 7 + 4.
4 est donc le reste de cette opération.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte