الگوریتم لان: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
جز ربات: تصحیح پیوند به پروژههای خواهر و تبدیل کردن پیوندها به خنثی در برابر پروتکل |
جز ویکیسازی رباتیک(۷.۵) >درستی یابی، راست به چپ، شماره ملی+املا+تمیز (۸.۵) |
||
خط ۱:
'''الگوریتم لان''' یا '''فرمول لان'''، که به الگوریتم "[[همنهشتی (نظریه اعداد)|پیمانه]] ۱۰" نیز مشهور است، یک فرمول ساده برای [[درستی یابی]] تعداد زیادی شماره شناسایی است، مانند شماره کارت های اعتباری، شماره های IMEI و [[شماره ملی]]. این روش توسط Hans Peter Luhn ابداع شد و در [http://www.google.com/patents?id=Y7leAAAAEBAJ U.S. Patent No. ۲،۹۵۰،۰۴۸] توصیف شده.
این الگوریتم به وفور استفاده می شود و به منظور یک [[تابع درهمساز رمزنگارانه]] استفاده
== نفاط قوت و ضعف ==
الگوریتم لان همه خطاهای تک رقمی را تشخیص می دهد، و همینطور جابجا شدن دو رقم کنار هم را. ولی جابجایی ۰۹ به ۹۰ و برعکس را
الگوریتم های پیچیده تر مانند الگوریتم [//en.wikipedia.org/w/index.php?title=Verhoeff_algorithm&oldid=446858849 Verhoeff] می توانند خطاهای جابجایی بیشتری را تشخیص دهند. الگوریتم [//en.wikipedia.org/w/index.php?title=Luhn_mod_N_algorithm&oldid=449928878 Luhn mod
به دلیل اینکه این الگوریتم به ترتیب [[راست به چپ]] روی ارقام عمل می کند و رقم های صفر فقط در صورتی که باعث تغییر مکان شوند نتیجه را تغییر می دهند، اضافه کردن صفر به اول یک رشته عددی محاسبات را تغییر
== توضیح غیر رسمی ==
این فرمول یک عدد را در برابر رقم تطبیق آن درستی یابی می
# با شروع از اولین رقم سمت راست و حرکت به سمت
▲# با شروع از اولین رقم سمت راست و حرکت به سمت چپ، یکی در میان رقم های شماره زوج را دو برابر کند.
# ارقام اعداد دو برابر شده را با اعدادی که دو برابر نشده اند جمع کند.
# اگر جواب جمع در پیمانه ی ۱۰ صفر
{{چپچین}}
سطر ۵۷ ⟵ ۵۶:
{{پایان چپچین}}
رقم تطبیق (x) بوسیله ی محاسبه ی ضرب جمع ارقام در ۹ در پیمانه ۱۰ بدست
#مجموع ارقام ۶۷ را محاسبه کن(۶۷).
#در ۹ ضرب کن (۶۰۳).
سطر ۶۴ ⟵ ۶۲:
#نتیجه رقم تطبیق می باشد.
روش جایگزین:
#مجموع ارقام ۶۷ را محاسبه کن(۶۷).
#رقم یکان آن را در نظر بگیر(۷).
سطر ۷۳ ⟵ ۷۱:
#همه ارقام را یکی در میان از سمت راست دو برابر کن: (1×2) = 2, (8×2) = 16, (3×2) = 6, (2×2) = 4, (9×2) = ۱۸
#مجموع همی ارقام را محاسبه کن (ارقام داخل پرانتز جواب ضرب های مرحله ۱ هستند): + x(رقم تطبیق) + (2) + 7 + (1+6) + 9 + (6) + 7 + (4) + 9 + (1+8) + 7 = x + 67.
#اگر مجموع مضربی از ۱۰
#بنابراین همه شماره حساب ها نا معتبر هستند بجز ۷۹۹۲۷۳۹۸۷۱۳ که دارای رقم تطبیق درست می باشد.
== پیاده سازی درستی یابی رقم تطبیق ==
<!--Do not add more code to this article. The CS MOS discourages multiple code samples, as they are rarely of encyclopedic value.-->▼
▲Do not add more code to this article. The CS MOS discourages multiple code samples, as they are rarely of encyclopedic value.
در [[پایتون (زبان برنامهنویسی)|پایتون]]:
<source lang="python">
سطر ۸۷ ⟵ ۸۳:
</source>
== محاسبه رقم تطبیق ==
پیاده سازی بالا درستی یک شماره ورودی را با یک شماره تطبیق چک می کند. برای محاسبه رقم تطبیق تغییر کوچکی در پیاده سازی نیاز است:
#سوییج کردن بین ضرب فرد و زوج.
سطر ۱۰۱ ⟵ ۹۷:
</source>
=== پیاده سازی های دیگر ===
{{چپچین}}
*[http://sites.google.com/site/abapexamples/javascript/luhn-validation Luhn implementations in Javascript]
سطر ۱۰۹ ⟵ ۱۰۵:
* Ruby: [https://gist.github.com/1182499 Luhn validation], [https://gist.github.com/1409815 Luhn generation]
{{پایان چپچین}}
=== همچنین نگاه کنید ===
{{چپچین}}
سطر ۱۱۷ ⟵ ۱۱۳:
{{پایان چپچین}}
== منابع ==
{{چپچین}}
{{پانویس}}
*{{US patent|۲۹۵۰۰۴۸}}, ''Computer for Verifying Numbers'', Hans P. Luhn, August 23, 1960.
سطر ۱۲۶ ⟵ ۱۲۲:
[[رده:الگوریتمهای چکسام]]
[[رده:همنهشتی در نظریه اعداد]]
[[رده:ویکیسازی رباتیک]]
|