Тема статьи – исследование целых чисел, у которых сумма всех цифр в десятичной записи равна 21. Такие числа часто встречаются в задачах по теории чисел, комбинаторике и даже в практических приложениях (например, в нумерации билетов, контрольных суммах и криптографии).
Что значит «сумма цифр»?
Для любого натурального числа n записанного в десятичной системе счисления, сумма цифр – это сумма всех его отдельных цифр. Обозначим её через S(n). Пример:
- S(1234) = 1 + 2 + 3 + 4 = 10
- S(987) = 9 + 8 + 7 = 24
Почему число 21?
Число 21 – интересный «порог»:
- Это первое двузначное число, сумма цифр которого может быть получена несколькими способами (например, 12 + 9, 15 + 6 и т;д.).
- В диапазоне от 1 000 000 до 9 999 999 (семизначные числа) максимальная возможная сумма цифр – 63 (9 × 7). Число 21 находится ровно в середине этого диапазона, что делает его удобным для демонстрации комбинаторных методов.
- В нумерации билетов (например, в лотерее «Счастливый билет») часто используют условие «сумма первых трёх цифр равна сумме последних трёх», где 21 часто выступает как целевая сумма.
Как находить все числа с суммой цифр 21?
Для поиска всех чисел, у которых S(n)=21, удобно использовать комбинаторный подход: рассматривать все разложения числа 21 на сумму цифр от 0 до 9.
Формальная постановка задачи
Найти все наборы (d_k, d_{k-1}, …, d_1), где каждая d_i – цифра (0 ≤ d_i ≤ 9), такие что:
d_k + d_{k-1} + … + d_1 = 21,
d_k ≠ 0 (чтобы число не имело ведущих нулей).
Метод «перебор с ограничениями»
Можно реализовать простой алгоритм на любом языке программирования:
for n in range(1, 10**7): # проверяем до 7‑значных чисел
if sum(map(int, str(n))) == 21:
print(n)
Однако такой «грубый» перебор неэффективен для больших диапазонов. Лучше использовать генерацию комбинаций.
Генерация комбинаций цифр
Считаем, что нам нужно распределить 21 «единицу» по k позициям, где k – количество цифр числа. Это классическая задача о размещении indistinguishable balls into distinguishable boxes с ограничением 0 ≤ d_i ≤ 9. Решается методом включения‑исключения.
Общее количество k-значных чисел с суммой цифр 21 равно:
C(21 + k ー 1, k ー 1) —
C(k, 1)·C(21, 10 + k ー 1, k ー 1) +
C(k, 2)·C(21 ー 20 + k — 1, k — 1) ー …
где C(n, r) – биномиальный коэффициент, а каждый последующий член учитывает ограничения «цифра ≤ 9».
Примеры чисел с суммой цифр 21
Ниже представлены первые несколько чисел, удовлетворяющих условию S(n)=21. Они упорядочены по возрастанию.
- 399
- 489
- 498
- 579
- 588
- 597
- 669
- 678
- 687
- 696
- 759
- 768
- 777
- 786
- 795
- 849
- 858
- 867
- 876
- 885
- 894
- 903
- 912
- 921
- 930
- 939
- 948
- 957
- 966
- 975
- 984
- 993
Обратите внимание, что после 999 (трёхзначные числа) появляются четырёхзначные варианты, например 1299, 1389, 1479 и т.д.
Свойства и интересные факты
- Симметрия. Если число n имеет сумму цифр 21, то и число, полученное перестановкой его цифр, тоже имеет сумму 21.
- Делимость на 3. Поскольку 21 делится на 3, любой такой номер также делится на 3. То есть S(n)=21 ⇒ n ≡ 0 (mod 3).
- Отсутствие делимости на 9. Сумма 21 не кратна 9, поэтому такие числа никогда не делятся на 9.
- Периодичность в системах счисления. В любой системе счисления с основанием b, где b > 21, аналогичное условие «сумма цифр = 21» будет иметь те же свойства, но в системах с малым основанием (например, в двоичной) условие становится невозможным.
Практические применения
Сумма цифр часто используется в качестве простой контрольной суммы. Число 21 может выступать в качестве «проверочного» значения в следующих сценариях:
- Лотерейные билеты. При генерации билетов иногда задают условие, что сумма цифр должна быть фиксированной (например, 21) – это упрощает проверку подлинности.
- Коды доступа. В некоторых системах пароли‑коды формируются так, чтобы их цифровая сумма была известна администратору (например, 21), что облегчает восстановление.
- Обучающие задачи. В школьных олимпиадах и конкурсах часто встречаются задачи на поиск чисел с заданной суммой цифр – 21 служит хорошим примером средней сложности.
Как быстро проверить число на сумму 21?
Для ручного расчёта достаточно сложить цифры. Если вы часто работаете с большими массивами, используйте один из следующих методов:
Табличный способ
Создайте таблицу «цифра → её значение», а затем складывайте значения, пока не получите 21. Если сумма превысит 21, можно сразу прекратить подсчёт.
Алгоритм «цифровой корень»
Цифровой корень dr(n) вычисляется как остаток от деления суммы цифр на 9 (с поправкой, что 0 → 9). Поскольку 21 ≡ 3 (mod 9), любой номер с суммой 21 будет иметь цифровой корень 3. Это позволяет быстро отсеять неподходящие числа:
if dr(n) != 3 → S(n) ≠ 21
Дальше проверяем только те, у кого цифровой корень 3.
Программный пример (Python)
Ниже – компактный скрипт, выводящий все пятизначные числа с суммой цифр 21;
def sum_digits(x):
return sum(int(d) for d in str(x))
result = [n for n in range(10000, 100000) if sum_digits(n) == 21]
print(result)
Числа, у которых сумма цифр равна 21, представляют собой интересный объект исследования в теории чисел. Они обладают рядом арифметических свойств (делимость на 3, отсутствие делимости на 9), легко генерируются с помощью комбинаторных методов и находят практическое применение в задачах контроля и в образовании. Понимание способов их нахождения и анализа открывает путь к более глубоким исследованиям, например, к изучению распределения сумм цифр в больших диапазонах или к построению сложных контрольных схем.
Ключевые слова: сумма цифр, 21, комбинаторика, цифровой корень, контрольная сумма, теория чисел.