- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
import random
while 0<1:
inn_d=str(random.randint(100000000,999999999))
a=int(inn_d[:1])*2
b=int(inn_d[1:2])*4
c=int(inn_d[2:3])*10
d=int(inn_d[3:4])*3
e=int(inn_d[4:5])*5
f=int(inn_d[5:6])*9
g=int(inn_d[6:7])*4
l=int(inn_d[7:8])*6
m=int(inn_d[8:9])*8
x=a+b+c+d+e+f+g+l+m
y=x%11
if y%11==10:
y=0
print str(inn_d)+str(y)
guest 28.06.2014 17:22 # 0
комментарии излишни
kegdan 28.06.2014 17:33 # −3
orion 28.06.2014 22:22 # −6
bormand 28.06.2014 22:26 # −2
> Ну и интересно почему такие множители.
Потому что в алгоритме проверки ИНН так написано. Автор не сам это придумал.
Коэффициенты разные ради страховки от попутанных цифр. mod 11, емнип, для правильного распределения - чтобы все к-ты были с ним взаимнопросты.
bormand 28.06.2014 22:32 # −3
Иначе некоторые разряды будут очень хуево влиять на контрольный. Например, тот разряд, который умножен на 5, будет добавлять к сумме либо 0 либо 5. Что совсем не айс. С mod 11 этой проблемы нет.
anonimb84a2f6fd141 23.08.2014 13:00 # −4
pl7ofit 17.07.2015 23:52 # −4
kegdan 18.07.2015 04:11 # −3
pl7ofit 03.02.2016 15:00 # −3
TarasB 03.02.2016 15:44 # −1
pl7ofit 22.03.2017 16:14 # −4