« Curiosités mathématiques/Trouver le jour de la semaine avec une date donnée » : différence entre les versions

Contenu supprimé Contenu ajouté
→‎Méthode 1 : Correction de la mauvaise traduction de l'algo original en C qui fonctionne bien
Ligne 19 :
</syntaxhighlight>
 
Comme Mike Keith est un mathématicien américain, d = Day pour Jour (d = 1 à 31) ; m = Month pour Mois (m = 1 à 12; 1 = Janvier, 2 = Février, 3 = Mars, ... , 12 = Décembre) et y = Year pour Année.
 
L'algorithme traduit les formules mathématiques suivantes :
Ligne 25 :
Si m < 3 :
 
:<math>wd = \left\lfloor \frac{23 \times m}{9} \right\rfloor + d + 4 + y + \left\lfloor \frac{y - 1}{4} \right\rfloor - \left\lfloor \frac{y - 1}{100} \right\rfloor + \left\lfloor \frac{y - 1}{400} \right\rfloor \pmod7</math>
 
Sinon :
 
:<math>wd = \left\lfloor \frac{23 \times m}{9} \right\rfloor + d + 2 + y + \left\lfloor \frac{y}{4} \right\rfloor - \left\lfloor \frac{y}{100} \right\rfloor + \left\lfloor \frac{y}{400} \right\rfloor \pmod7</math>
 
D''wd'' =(''weekday'') Jourest dele semainejour (Dde =la 0semaine à 6;: 0 = Dimanche, 1 = Lundi, ... , 6 = Samedi) .
Pour l'explication de la division par 100 et par 400, c'est pour savoir si l'année est bissextile :
 
''Si Y n'est pas divisible par 4, l'année n'est pas bissextile.''
 
''Si Y est divisible par 4, l'année est bissextile sauf si A est divisible par 100 et pas par 400.''
 
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
 
En détails :
* Une année non bissextile comporte 365 jours, soit 52 semaines et 1 jour. Le jour de la semaine d'une date se décale donc d'un jour par année non bissextile, il faut donc ajouter le nombre d'années écoulées.
* Une année bissextile comporte 366 jours, soit 52 semaines et 2 jours. Le jour de la semaine d'une date se décale donc de deux jours par année bissextile au lieu d'un seul, il faut donc ajouter en plus le nombre d'années bissextiles écoulées.
* Une année est bissextile si elle est multiple de 4, mais non multiple de 100 à moins qu'elle soit multiple de 400. On ajoute donc l'année, l'année divisée par 4 pour le nombre d'années multiples de 4, moins (sauf) l'année divisée par 100 pour le nombre d'années multiples de 100, plus l'année divisée par 400 pour le nombre d'années multiples de 400.
 
'''Exemples :'''