Алгоритм проверки СНИЛС

Алгоритм проверки СНЛИС во многом походит на алгоритм проверки ИНН или других регистрационных номеров. Чтобы проверить, правильно ли указан номер, потребуется выполнить несколько действий.

Номер СНИЛС имеет формат вида NNN-NNN-NNN ZZ, где последовательность N — сам номер, а ZZ — контрольное число.

Для проверки соответствия номера контрольному числу выполняются следующие действия:

  • каждое число (от 0 до 9) в номере умножается на номер своей позиции, отсчитываемой справа. То есть первое число умножается на 9, второе на 8 и т. д.;
  • все произведения суммируются.

Дальше нужно работать с полученной суммой:

  • если полученная сумма меньше 100, значит она должна быть равна контрольному числу ZZ;
  • если сумма равна 100 или 101, значит контрольное число должно быть 00;
  • если сумма больше 101, то нужно разделить её на 101. Остаток снова проверяется по двум вышеописанным пунктам.

Важное уточнение: данный алгоритм работает только для номеров больше 001-001-998.

Алгоритм проверки СНИЛС просто реализовать самостоятельно. В качестве примера можно посмотреть проверку СНИЛС на python.

upd 02.08.14: исправлена ошибка, когда остаток от деления на 101 равнялся 100, из-за чего контрольное число сравнивалось неверно.

комментария 2

  1. Дмитрий:

    >>если сумма больше 101, то нужно разделить её на 101. Остаток от снова проверяется по двум вышеописанным пунктам. Остаток меньше 100 – должен быть равен контрольному числу, если равен 100 или 101 – контрольное число должно быть 00.

    Каким образом остаток от деления на 101 может равняться 101?

    • admin:

      Вы правы, моя невнимательность при описании. По аналогии со вторым пунктом продублировал про «100 и 101», хотя там это относится к сумме, а не к остатку от деления.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *