الگوریتم لان: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
Ebads67 (بحث | مشارکت‌ها)
Ebads67 (بحث | مشارکت‌ها)
خط ۷۵:
#اگر مجموع مضربي از 10 بود،‌ شماره حساب احتمالا معتبر مي باشد. 3 تنها رقم معتبر است كه مجموع 70 را توليد مي كند كه مضربي از 10 مي باشد.
#بنابراين همه شماره حساب ها نا معتبر هستند بجز 79927398713 كه داراي رقم تصحيح درست مي باشد.
==پياده سازي درستي يابي رقم تصحيحتطبيق==
<!--
Do not add more code to this article. The CS MOS discourages multiple code samples, as they are rarely of encyclopedic value.
خط ۸۴:
num = map(int, str(cc))
return sum(num[::-2] + [sum(divmod(d * 2, 10)) for d in num[-2::-2]]) % 10 == 0
</source>
 
==محاسبه رقم تطبيق==
پياده سازي بالا درستي يك شماره ورودي را با يك شماره تطبيق چك مي كند. براي محاسبه رقم تطبيق تغيير كوچكي در پياده سازي نياز است:
#سوييج كردن بين ضرب فرد و زوج.
#اگر مجموع به پيمانه 10 صفر شد آنگاه رقم تطبيق صفر است.
#در غير اين صورت رقم تطبيق برابر رقم اول مجموع - 10 مي باشد.
در [[Python (programming language)|پايتون]]:
 
<source lang="python">
def calculate_luhn(cc):
num = map(int, str(cc))
check_digit = 10 - sum(num[-2::-2] + [sum(divmod(d * 2, 10)) for d in num[::-2]]) % 10
return 0 if check_digit == 10 else check_digit
</source>