===== Bankkártya számok ellenőrzése ====== A **Luhn**-algoritmus (vagy "modulus 10" algoritmus) egy egyszerű ellenőrző algoritmus, amelyet a hitelkártyaszámok (például Visa, MasterCard) érvényességének ellenőrzésére használnak. Ez az algoritmus képes kiszűrni a véletlen adatbeviteli hibákat, például amikor egy számjegy elgépelődik. Az algoritmus a következő lépéseken alapszik: 1. **A számjegyek megfordítása**: A kártyaszámot jobbról balra kell olvasni. 2. **Minden második számjegy duplázása**: A jobb széltől indulva minden második számjegyet meg kell duplázni. Ha a megduplázott számjegy 10-nél nagyobb (például 12), akkor a két számjegyet össze kell adni (például 1 + 2 = 3), hogy egyjegyű eredményt kapjunk. (ez programozáskor ugyanaz mintha a 10-nél nagyobb számokból 9-et kivonnánk) 3. **A számjegyek összege**: Az így módosított számjegyeket össze kell adni az eredeti számjegyekkel együtt, amelyek nem lettek megduplázva. 4. **Ellenőrzés**: Ha az összeg osztható 10-zel (a végösszeg mod 10 = 0), akkor a szám érvényes a Luhn-algoritmus szerint, és így nagy valószínűséggel helyes a kártyaszám. === Példa egy Visa kártyaszám ellenőrzésére a Luhn-algoritmussal === Tegyük fel, hogy a kártyaszám: **4532 8827 1225 4561** 1. Megfordítva: 1, 6, 5, 4, 2, 2, 1, 7, 8, 2, 8, 3, 5, 4. 2. Minden második számjegyet megduplázunk: * 1 (változatlan), **6×2 = 12** (1+2=3), 5 (változatlan), **4×2 = 8**, 2 (változatlan), **2×2 = 4**, 1 (változatlan), **7×2 = 14** (1+4=5), 8 (változatlan), **2×2 = 4**, 8 (változatlan), **3×2 = 6**, 5 (változatlan), **4×2 = 8**. 3. Az összeg kiszámítása: \[ 1 + 3 + 5 + 8 + 2 + 4 + 1 + 5 + 8 + 4 + 8 + 6 + 5 + 8 = 68 \] 4. Mivel \( 68 \mod 10 = 8 \), ez a kártyaszám érvénytelen lenne a Luhn-algoritmus szerint. Ha az eredmény osztható lenne 10-zel, akkor a szám érvényes lenne. A Luhn-algoritmus tehát egyszerű módon segít az érvénytelen kártyaszámok kiszűrésében.