[{"@context":"http:\/\/schema.org\/","@type":"BlogPosting","@id":"https:\/\/wiki.edu.vn\/all2fr\/wiki1\/luhn-algorithme-wikipedia\/#BlogPosting","mainEntityOfPage":"https:\/\/wiki.edu.vn\/all2fr\/wiki1\/luhn-algorithme-wikipedia\/","headline":"Luhn-algorithme-wikipedia","name":"Luhn-algorithme-wikipedia","description":"before-content-x4 Num\u00e9ro de locomotif avec un montant de test selon l’algorithme Luhn \u00e0 Deutsche Bahn Le Algorithme de Luhn ou","datePublished":"2023-10-26","dateModified":"2023-10-26","author":{"@type":"Person","@id":"https:\/\/wiki.edu.vn\/all2fr\/wiki1\/author\/lordneo\/#Person","name":"lordneo","url":"https:\/\/wiki.edu.vn\/all2fr\/wiki1\/author\/lordneo\/","image":{"@type":"ImageObject","@id":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","height":96,"width":96}},"publisher":{"@type":"Organization","name":"Enzyklop\u00e4die","logo":{"@type":"ImageObject","@id":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","url":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","width":600,"height":60}},"image":{"@type":"ImageObject","@id":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/6\/6a\/Bahn_Logo.jpg\/220px-Bahn_Logo.jpg","url":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/6\/6a\/Bahn_Logo.jpg\/220px-Bahn_Logo.jpg","height":"220","width":"220"},"url":"https:\/\/wiki.edu.vn\/all2fr\/wiki1\/luhn-algorithme-wikipedia\/","wordCount":4836,"articleBody":" (adsbygoogle = window.adsbygoogle || []).push({});before-content-x4 Num\u00e9ro de locomotif avec un montant de test selon l’algorithme Luhn \u00e0 Deutsche Bahn Le Algorithme de Luhn ou la Formule de Luhn , \u00e9galement connu sous le nom d’algorithme “modulo 10” ou “mod 10” et en tant que \u00c0 double-m\u00e9thode est une m\u00e9thode simple pour calculer une somme d’essai. Il est devenu dans les ann\u00e9es 1950 [d’abord] D\u00e9velopp\u00e9 par l’informaticien allemando-am\u00e9ricain Hans Peter Luhn et est maintenant sans communaut\u00e9 et tr\u00e8s r\u00e9pandu. Entre autres choses, l’algorithme Luhn sert \u00e0 v\u00e9rifier les num\u00e9ros de carte de cr\u00e9dit et les num\u00e9ros de s\u00e9curit\u00e9 sociale canadiens, ISINS et les num\u00e9ros de compte \u00e0 sept chiffres de Deutsche Bank et Commerzbank ainsi que de nombreuses banques d’\u00e9pargne. Il est \u00e9galement utilis\u00e9 dans le nombre de locomotives et de voitures ferroviaires selon le programme d’\u00e9tiquetage de l’UIC, comme cela l’a \u00e9t\u00e9 dans la s\u00e9rie Federal Railway. (adsbygoogle = window.adsbygoogle || []).push({});after-content-x4L’algorithme Luhn reconna\u00eet chaque erreur sur les chiffres individuels, ainsi que dans la plupart des cas d’\u00e9changes \u00e0 partir de chiffres voisins. L’algorithme Luhn cr\u00e9e un num\u00e9ro de test, qui est g\u00e9n\u00e9ralement attach\u00e9 au num\u00e9ro d’identification incomplet \u00e0 l’arri\u00e8re. Il en r\u00e9sulte le nombre complet. Ceci est consid\u00e9r\u00e9 comme valide s’il existe l’algorithme de test suivant: (adsbygoogle = window.adsbygoogle || []).push({});after-content-x4Parcourez le nombre de droite \u00e0 gauche et formez la somme des chiffres, mais: double chaque deuxi\u00e8me chiffre, et si une valeur est sup\u00e9rieure \u00e0 9, soustrayez 9 Si la somme a un 0, reconnaissez le nombre comme valide et autrement pas Par exemple, le num\u00e9ro 18937 Pour v\u00e9rifier, les chiffres sont ex\u00e9cut\u00e9s et boulevers\u00e9s de droite \u00e0 gauche, c’est-\u00e0-dire \u00e0 partir de 7. Chaque deuxi\u00e8me chiffre est doubl\u00e9, dans cet exemple, les 3 et 8. \u00c9tant donn\u00e9 qu’une valeur est sup\u00e9rieure \u00e0 9 lorsque le 8 est double, 9 est soustrait, de sorte que 16 – 9 = 7 r\u00e9sultats. Ainsi, la somme est calcul\u00e9e comme 7 + (2 \u00d7 3 ) + 9 + (2 \u00d7 8 – 9) + d’abord = 7 + 6 + 9 + 7 + 1 = 30. \u00c9tant donn\u00e9 que les 30 se terminent \u00e0 0, le nombre est valide. Techniquement parlant, une sorte de somme crois\u00e9e du nombre est calcul\u00e9e avec le traitement sp\u00e9cial de chaque deuxi\u00e8me place. Le r\u00e9sultat est r\u00e9duit le modulo 10; Cela signifie que cela n’a pas d’importance le r\u00e9sultat lui-m\u00eame, mais uniquement sur le reste qui sort par 10 avec une division enti\u00e8re. Ce repos est la derni\u00e8re place du r\u00e9sultat. Si ce repos est 0, qui est synonyme du fait que le r\u00e9sultat est divisible par 10, le nombre est consid\u00e9r\u00e9 comme valide, sinon non. (adsbygoogle = window.adsbygoogle || []).push({});after-content-x4L’algorithme Luhn le reconna\u00eet lorsqu’un nombre est accidentellement entr\u00e9 lors de la saisie d’un nombre. Cela modifie la somme d’un montant entre 1 et 9 et n’est donc plus divisible par 10. Si un 4 est entr\u00e9 dans l’exemple ci-dessus au lieu du 1, le r\u00e9sultat 33 et donc non divisible par 10. Si un 6 est entr\u00e9 au lieu du 8, le r\u00e9sultat 26 et donc non divisible par 10. Une entr\u00e9e en faux chiffres serait \u00e9galement reconnue en cas de formation de suce transversale normale – pas l’un des \u00abturners nombres\u00bb fr\u00e9quemment qui se pr\u00e9sentent, c’est-\u00e0-dire l’\u00e9change de deux chiffres successifs. Cela ne changerait pas la somme crois\u00e9e normale. L’algorithme Luhn reconna\u00eet un tel tour de nombre par le fait qu’un nombre diff\u00e9rent est d\u00e9sormais doubl\u00e9 qu’auparavant et que le montant crois\u00e9 change. Par exemple, le num\u00e9ro 190 est valide (Luhn Testing Montant 10), 910 Not (Luhn Test Sum 11), c’est-\u00e0-dire H. Le num\u00e9ro Turner 19 \u00e0 91 est reconnu. Seuls le nombre de tariveurs des chiffres 0 et 9 sont exclus, car leurs sommes crois\u00e9es sont les m\u00eames avec et sans doubler. Par exemple, 190 et 109 sont tous deux valides (Luhn Test Sum 10), c’est-\u00e0-dire H. Le num\u00e9ro Turner 90 \u00e0 09 n’est pas reconnu. Pas L’\u00e9change de chiffres est reconnu, dont les positions diff\u00e8rent en une quantit\u00e9 droite – par exemple, si, par exemple, les 3e et 5e chiffres ou les 2e et 6e chiffres sont \u00e9chang\u00e9s. De m\u00eame, il peut ne pas \u00eatre reconnu si deux chiffres ou plus sont incorrectement saisis. Dans les impl\u00e9mentations suivantes de l’algorithme, le nombre est une cha\u00eene, c’est-\u00e0-dire comme une cha\u00eene nombre \u00e0 la fonction Checkluhn remettre. Dans la fonction, cette cha\u00eene est de gauche \u00e0 droite d’une mani\u00e8re naturelle – donc vice versa que dans la d\u00e9finition de l’algorithme. Cependant, en d\u00e9terminant si la longueur de la cha\u00eene est droite ou \u00e9trange, il r\u00e9ussit toujours \u00e0 doubler les chiffres dans les positions correctes. Table of ContentsPseudo-code [ Modifier | Modifier le texte source ]] Java [ Modifier | Modifier le texte source ]] Javascrip [ Modifier | Modifier le texte source ]] Python [ Modifier | Modifier le texte source ]] VB \/ VBA [ Modifier | Modifier le texte source ]] Tsql [ Modifier | Modifier le texte source ]] Pseudo-code [ Modifier | Modifier le texte source ]] fonction Checkluhn ( cha\u00eene nombre){ int somme: = 0 int lng: = longueur (nombre) int parit\u00e9: = modulo lng 2 pour je depuis 0 pour lng - 1 { int Chiffre: = Toleger (nombre [i]) si i modulo 2 = parit\u00e9 { chiffre: = chiffre \u00d7 2 si chiffre> 9 chiffre: = chiffre - 9 } somme: = somme + chiffre } retour (Je suis un module 10) = 0} Java [ Modifier | Modifier le texte source ]] public statique bool\u00e9en v\u00e9rifier ( int [] chiffres ) { int somme = 0 ; int longueur = chiffres . longueur ; pour ( int je = 0 ; je < longueur ; je ++ ) { \/\/ Obtenez des chiffres dans l'ordre inverse int chiffre = chiffres [ longueur - je - d'abord ]] ; \/\/ chaque 2\u00e8me nombre multipliez avec 2 si ( je % 2 == d'abord ) { chiffre * = 2 ; } somme + = chiffre > 9 ? chiffre - 9 : chiffre ; } retour somme % dix == 0 ; } Javascrip [ Modifier | Modifier le texte source ]] fonction v\u00e9rifier ( code ) { si ( Nombre . Isnan ( code )) retour '' ; \u00e9tait seul = code . longueur ; \u00e9tait parit\u00e9 = seul % 2 ; \u00e9tait somme = 0 ; pour ( \u00e9tait je = seul - d'abord ; je > = 0 ; je - ) { \u00e9tait d = pardent ( code . charat ( je )); si ( je % 2 == parit\u00e9 ) { d * = 2 } si ( d > 9 ) { d - = 9 } somme + = d ; } retour ( somme % dix ). tostring (); } Python [ Modifier | Modifier le texte source ]] def Checkluhn ( nombre ): somme = 0 parit\u00e9 = seul ( nombre ) % 2 pour je , chiffre dans \u00e9num\u00e9rer ( int ( X ) pour X dans nombre ): si je % 2 == parit\u00e9 : chiffre * = 2 si chiffre > 9 : chiffre - = 9 somme + = chiffre retour somme % dix == 0 Ou: def Checkluhn ( nombre ): chiffres = liste ( carte ( int , nombre )) retour 0 == somme ( chiffres + [ d + ( d > 4 ) pour d dans chiffres [ - 2 :: - 2 ]] ]) % dix VB \/ VBA [ Modifier | Modifier le texte source ]] Public Fonction Checkluhn ( nombre Comme Cha\u00eene ) Comme Long Faible Longueur de chaine Comme Long , parit\u00e9 Comme Long , somme Comme Long , je Comme Long , chiffre Comme Long Longueur de chaine = Seul ( nombre ) parit\u00e9 = Longueur de chaine Contre 2 somme = 0 Pour je = Longueur de chaine Pour d'abord Marcher - d'abord chiffre = CLNG ( Milieu ( nombre , je , d'abord )) If (i Mod 2) parity Then digit = digit * 2 If digit > 9 Then digit = digit - 9 End If End If sum = sum + digit Next i checkLuhn = sum Mod 10End FunctionTsql [ Modifier | Modifier le texte source ]] CR\u00c9ER FONCTION FN_CHECKLUHN ( @ Saisir Nvarchar ( Max ) ) RETOUR BIT COMMENCER D\u00c9CLARER @ Actuel Int ; D\u00c9CLARER @ Cnt Int = 0 ; DECLARE @Checksum BIGINT = 0; -- check if input is numeric, else return null IF ISNUMERIC(@Input) = 0 RETURN NULL WHILE @Cnt 9 SET @CurrentDigit = @CurrentDigit - 9; SET @Checksum = @Checksum + @CurrentDigit; SET @Cnt = @Cnt + 1; END RETURN IIF(@Checksum % 10 = 0, 1, 0);ENDGOLe num\u00e9ro d’identification de l’\u00e9chantillon 446-667-651 est donn\u00e9. Chiffre Doubl\u00e9 R\u00e9duit Somme des chiffres d’abord d’abord d’abord 5 dix 10 – 9 d’abord 6 6 6 7 14 14 – 9 5 6 6 6 6 douzi\u00e8me 12 – 9 3 6 6 6 4 8 8 8 4 4 4 Total: 40 La somme 40 est divis\u00e9e par 10; Le reste est 0 – donc le nombre est valide. Avec le girocard, le calcul du nombre diff\u00e8re l\u00e9g\u00e8rement. Chaque deuxi\u00e8me chiffre est doubl\u00e9 de la droite (au lieu de la seconde de droite). \u2191 Brevet am\u00e9ricain n \u00b0 2 950 048 , Inscription soumise le 6 janvier 1954, brevet accord\u00e9 le 23 ao\u00fbt 1960. (adsbygoogle = window.adsbygoogle || []).push({});after-content-x4"},{"@context":"http:\/\/schema.org\/","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https:\/\/wiki.edu.vn\/all2fr\/wiki1\/#breadcrumbitem","name":"Enzyklop\u00e4die"}},{"@type":"ListItem","position":2,"item":{"@id":"https:\/\/wiki.edu.vn\/all2fr\/wiki1\/luhn-algorithme-wikipedia\/#breadcrumbitem","name":"Luhn-algorithme-wikipedia"}}]}]