Skip to content

Commit 66736e3

Browse files
committed
Added Luhn Algorithm.
Signed-off-by: gil9red <[email protected]>
1 parent 91f02c0 commit 66736e3

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

LuhnAlgorithm/LuhnAlgorithm.py

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# coding=utf-8
2+
3+
__author__ = 'ipetrash'
4+
5+
if __name__ == '__main__':
6+
number_card = raw_input("Number card: ")
7+
sum = 0
8+
digits = [int(x) for x in number_card if x.isdigit()]
9+
digits.reverse()
10+
for i in xrange(len(digits)):
11+
p = digits[i]
12+
if i % 2 is not 0:
13+
p *= 2
14+
if p > 9:
15+
p -= 9
16+
sum += p
17+
18+
print("sum: %d" % sum)
19+
sum = 10 - (sum % 10)
20+
sum = 0 if sum is 10 else sum
21+
22+
print("checksum: %s" % sum)
23+
print("card number is correct" if (sum % 10 is 0) else "card number is incorrect")

LuhnAlgorithm/README.md

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
LuhnAlgorithm
2+
===========
3+
4+
EN:
5+
The Luhn algorithm or Luhn formula, also known as the "modulus 10" or "mod 10" algorithm, is a simple
6+
checksum formula used to validate a variety of identification numbers, such as credit card numbers,
7+
IMEI numbers, National Provider Identifier numbers in US and Canadian Social Insurance Numbers. It was
8+
created by IBM scientist Hans Peter Luhn and described in U.S. Patent No. 2,950,048, filed on
9+
January 6, 1954, and granted on August 23, 1960.
10+
11+
RU:
12+
Алгоритм Лу?на (англ. Luhn algorithm) — алгоритм вычисления контрольной цифры номера пластиковых карт в
13+
соответствии со стандартом ISO/IEC 7812. Не является криптографическим средством, предназначение алгоритма
14+
в первую очередь — выявление ошибок, вызванных непреднамеренным искажением данных (например, при ручном
15+
вводе номера карты, при приёме данных о номере социального страхования по телефону). Позволяет лишь с некоторой
16+
степенью достоверности судить об отсутствии ошибок в блоке цифр, но не даёт возможности локализации и коррекции
17+
обнаруженной неточности. Алгоритм разработан сотрудником фирмы IBM Гансом Питером Луном, описан в США в 1954 году,
18+
патент получен в 1960 году.

0 commit comments

Comments
 (0)