Deutsch English Français Italiano |
<sgv423$2ia$1@cabale.usenet-fr.net> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!usenet-fr.net!.POSTED!not-for-mail From: Olivier Miakinen <om+news@miakinen.net> Newsgroups: fr.sci.maths Subject: =?UTF-8?Q?Re:_Modulo_tout_retourn=c3=a9_dans_les_clefs?= Date: Sat, 4 Sep 2021 08:34:43 +0200 Organization: There's no cabale Lines: 182 Message-ID: <sgv423$2ia$1@cabale.usenet-fr.net> References: <sgap79$vsa$2@shakotay.alphanet.ch> <sgbruv$2n00$1@cabale.usenet-fr.net> <sgd0df$sch$2@shakotay.alphanet.ch> <sgtnp9$2n5o$1@cabale.usenet-fr.net> <sguc4k$3dg$1@shakotay.alphanet.ch> NNTP-Posting-Host: 220.12.205.77.rev.sfr.net Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: cabale.usenet-fr.net 1630737283 2634 77.205.12.220 (4 Sep 2021 06:34:43 GMT) X-Complaints-To: abuse@usenet-fr.net NNTP-Posting-Date: Sat, 4 Sep 2021 06:34:43 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4 In-Reply-To: <sguc4k$3dg$1@shakotay.alphanet.ch> Bytes: 6283 Le 04/09/2021 01:46, Benoit a écrit : > >> 2e cas : deux chiffres sont erronés. >> >> Voici un exemple d'erreur possible : ajouter 1 à un chiffre du code INSEE >> (par exemple le passer de 1 à 2 ou de 5 à 6), et simultanément ajouter 7 >> au chiffre qui se trouve cinq rangs plus loin (par exemple le passer de 0 >> à 7 ou de 2 à 9). Ceci est possible parce que 100007 est un multiple de >> 97 (c'est 1031 fois 97). Cette erreur peut concerner 8 paires de chiffres >> d'un nombre de 13 chiffres. Par ailleurs, elle peut concerner 9 valeurs >> du premier chiffre (de 0 à 8) et 3 valeurs de l'autre chiffre (de 0 à 2). >> L'erreur associée au nombre 100007 doit donc être comptée 216 fois car >> 8×9×3 = 216. > > N’y a-t-il pas : > > — 3 007 : 97 x 31 ==> 10 x 7 x 3 = 210 erreurs > — 7 000 005 : 97 x 72 165 ==> 7 x 3 x 5 = 105 erreurs > - 50 000 008 : 97 x 515464 ==> 6 X 5 X 2 = 60 erreurs Oui. Bien vu, et bien calculé. Outre 100 007, les nombres 3 007, 7 000 005 et 50 000 008 sont les seuls pour lesquels le changement de deux chiffres *dans le même sens* est une erreur indétectable. Et tu as bien calculé le nombre de possibilités pour chaque. Mais il ne faut pas oublier que l'on peut aussi *augmenter* un chiffre tout en *diminuant* un autre chiffre. Cela veut dire qu'en plus de chercher les multiples de 97 de la forme (d1 × 10^n + d2) il faut aussi considérer ceux de la forme (d1 × 10^n - d2). Voir la liste (sortie de mon programme) en fin de cet article. > 375 erreurs potentielles. Pas beaucoup, mais pour une fois c’est mieux > d’avoir un 0 en maths :) :-D > Puis 60 000 000 000 007 mais 14 chiffres et je ne sais aller au-delà > avec mon bon vieil Excel. J'aurais pu aller plus loin avec Python, mais je me suis arrêté aux 13 chiffres du numéro de sécurité sociale. > [...] > > Pour les numéros de cartes bancaires c’est la Formule de Luhn qui est > utilisée, mais là je ne sais pas comment calculer pour le problème > énoncé ci-dessus. Si le résultat doit être un multiple de 10 je ne vois > pas comment cela peut être plus sûr. > > <https://fr.wikipedia.org/wiki/Formule_de_Luhn> Merci, je vais aller lire ça. Maintenant la sortie de mon programme pour le modulo 97 dans un code à 13 chiffres : ======================================== $ code_correcteur.py 97 97 ←11→ +1 -3 11×9×7 = 693 194 ←11→ +2 -6 11×8×4 = 352 291 ←11→ +3 -9 11×7×1 = 77 3007 ←10→ +3 +7 10×7×3 = 210 9991 ←9→ +1 -9 9×9×1 = 81 100007 ←8→ +1 +7 8×9×3 = 216 7000005 ←7→ +7 +5 7×3×5 = 105 50000008 ←6→ +5 +8 6×5×2 = 60 89999995 ←6→ +9 -5 6×1×5 = 30 599999999 ←5→ +6 -1 5×4×9 = 180 2999999995 ←4→ +3 -5 4×7×5 = 140 19999999999 ←3→ +2 -1 3×8×9 = 216 39999999998 ←3→ +4 -2 3×6×8 = 144 59999999997 ←3→ +6 -3 3×4×7 = 84 79999999996 ←3→ +8 -4 3×2×6 = 36 99999999995 ←2→ +1 -5 2×9×5 = 90 1999999999997 ←1→ +2 -3 1×8×7 = 56 3999999999994 ←1→ +4 -6 1×6×4 = 24 5999999999991 ←1→ +6 -9 1×4×1 = 4 Total pour 97 = 2798 ======================================== Tant que j'y suis, le résultat pour 93 : ======================================== $ code_correcteur.py 93 93 ←11→ +1 -7 11×9×3 = 297 3999 ←10→ +4 -1 10×6×9 = 540 7998 ←10→ +8 -2 10×2×8 = 160 19995 ←9→ +2 -5 9×8×5 = 360 399993 ←8→ +4 -7 8×6×3 = 144 2999994 ←7→ +3 -6 7×7×4 = 196 79999995 ←6→ +8 -5 6×2×5 = 60 90000006 ←6→ +9 +6 6×1×4 = 24 499999992 ←5→ +5 -8 5×5×2 = 50 600000009 ←5→ +6 +9 5×4×1 = 20 5999999997 ←4→ +6 -3 4×4×7 = 112 69999999996 ←3→ +7 -4 3×3×6 = 54 499999999998 ←2→ +5 -2 2×5×8 = 80 999999999996 ←1→ +1 -4 1×9×6 = 54 1999999999992 ←1→ +2 -8 1×8×2 = 16 Total pour 93 = 2167 ======================================== Et les résultats non détaillés (juste le total) pour tous les nombres à deux chiffres qui sont premiers avec 10 : ======================================== $ code_correcteur.py 10 99 Total pour 11 = 15786 Total pour 13 = 17330 Total pour 17 = 15973 Total pour 19 = 14645 Total pour 21 = 13398 Total pour 23 = 11750 Total pour 27 = 12342 Total pour 29 = 8928 Total pour 31 = 8316 Total pour 33 = 13320 Total pour 37 = 10186 Total pour 39 = 7220 Total pour 41 = 7436 Total pour 43 = 5716 Total pour 47 = 5296 Total pour 49 = 5487 Total pour 51 = 5130 Total pour 53 = 4168 Total pour 57 = 4371 Total pour 59 = 4920 Total pour 61 = 3499 Total pour 63 = 4608 Total pour 67 = 4457 Total pour 69 = 3918 Total pour 71 = 3441 Total pour 73 = 5673 Total pour 77 = 7282 Total pour 79 = 2491 Total pour 81 = 3494 Total pour 83 = 2863 Total pour 87 = 3541 Total pour 89 = 2669 Total pour 91 = 6666 Total pour 93 = 2167 Total pour 97 = 2798 Total pour 99 = 10290 Meilleur total : 2167 pour 93 ========== REMAINDER OF ARTICLE TRUNCATED ==========