Как найти цифровой корень числа

From Wikipedia, the free encyclopedia

The digital root (also repeated digital sum) of a natural number in a given radix is the (single digit) value obtained by an iterative process of summing digits, on each iteration using the result from the previous iteration to compute a digit sum. The process continues until a single-digit number is reached. For example, in base 10, the digital root of the number 12345 is 6 because the sum of the digits in the number is 1 + 2 + 3 + 4 + 5 = 15, then the addition process is repeated again for the resulting number 15, so that the sum of 1 + 5 equals 6, which is the digital root of that number. In base 10, this is equivalent to taking the remainder upon division by 9 (except when the digital root is 9, where the remainder upon division by 9 will be 0), which allows it to be used as a divisibility rule.

Formal definition[edit]

Let n be a natural number. For base {displaystyle b>1}, we define the digit sum {displaystyle F_{b}:mathbb {N} rightarrow mathbb {N} } to be the following:

{displaystyle F_{b}(n)=sum _{i=0}^{k-1}d_{i}}

where {displaystyle k=lfloor log _{b}{n}rfloor +1} is the number of digits in the number in base b, and

{displaystyle d_{i}={frac {n{bmod {b^{i+1}}}-n{bmod {b}}^{i}}{b^{i}}}}

is the value of each digit of the number. A natural number n is a digital root if it is a fixed point for {displaystyle F_{b}}, which occurs if {displaystyle F_{b}(n)=n}.

All natural numbers n are preperiodic points for {displaystyle F_{b}}, regardless of the base. This is because if {displaystyle ngeq b}, then

{displaystyle n=sum _{i=0}^{k-1}d_{i}b^{i}}

and therefore

{displaystyle F_{b}(n)=sum _{i=0}^{k-1}d_{i}<sum _{i=0}^{k-1}d_{i}b^{i}=n}

because {displaystyle b>1}.
If {displaystyle n<b}, then trivially

{displaystyle F_{b}(n)=n}

Therefore, the only possible digital roots are the natural numbers {displaystyle 0leq n<b}, and there are no cycles other than the fixed points of {displaystyle 0leq n<b}.

Example[edit]

In base 12, 8 is the additive digital root of the base 10 number 3110, as for {displaystyle n=3110}

{displaystyle d_{0}={frac {3110{bmod {12^{0+1}}}-3110{bmod {1}}2^{0}}{12^{0}}}={frac {3110{bmod {12}}-3110{bmod {1}}}{1}}={frac {2-0}{1}}={frac {2}{1}}=2}
{displaystyle d_{1}={frac {3110{bmod {12^{1+1}}}-3110{bmod {1}}2^{1}}{12^{1}}}={frac {3110{bmod {144}}-3110{bmod {1}}2}{12}}={frac {86-2}{12}}={frac {84}{12}}=7}
{displaystyle d_{2}={frac {3110{bmod {12^{2+1}}}-3110{bmod {1}}2^{2}}{12^{2}}}={frac {3110{bmod {1728}}-3110{bmod {1}}44}{144}}={frac {1382-86}{144}}={frac {1296}{144}}=9}
{displaystyle d_{3}={frac {3110{bmod {12^{3+1}}}-3110{bmod {1}}2^{3}}{12^{3}}}={frac {3110{bmod {20736}}-3110{bmod {1}}728}{1728}}={frac {3110-1382}{1728}}={frac {1728}{1728}}=1}
{displaystyle F_{12}(3110)=sum _{i=0}^{4-1}d_{i}=2+7+9+1=19}

This process shows that 3110 is 1972 in base 12. Now for {displaystyle F_{12}(3110)=19}

{displaystyle d_{0}={frac {19{bmod {12^{0+1}}}-19{bmod {1}}2^{0}}{12^{0}}}={frac {19{bmod {12}}-19{bmod {1}}}{1}}={frac {7-0}{1}}={frac {7}{1}}=7}
{displaystyle d_{1}={frac {19{bmod {12^{1+1}}}-19{bmod {1}}2^{1}}{12^{1}}}={frac {19{bmod {144}}-19{bmod {1}}2}{12}}={frac {19-7}{12}}={frac {12}{12}}=1}
{displaystyle F_{12}(19)=sum _{i=0}^{2-1}d_{i}=1+7=8}

shows that 19 is 17 in base 12. And as 8 is a 1-digit number in base 12,

{displaystyle F_{12}(8)=8}

Direct formulas[edit]

We can define the digit root directly for base {displaystyle b>1} {displaystyle operatorname {dr} _{b}:mathbb {N} rightarrow mathbb {N} } in the following ways:

Congruence formula[edit]

The formula in base b is:

{displaystyle operatorname {dr} _{b}(n)={begin{cases}0&{mbox{if}} n=0,\b-1&{mbox{if}} nneq 0, n equiv 0{bmod {b-1}},\n {rm {mod}} (b-1)&{mbox{if}} nnot equiv 0{bmod {b-1}}end{cases}}}

or,

{displaystyle operatorname {dr} _{b}(n)={begin{cases}0&{mbox{if}} n=0,\1 + ((n-1) {rm {mod}} (b-1))&{mbox{if}} nneq 0.end{cases}}}

In base 10, the corresponding sequence is (sequence A010888 in the OEIS).

The digital root is the value modulo b-1 because {displaystyle bequiv 1{bmod {b-1}},} and thus {displaystyle b^{k}equiv 1^{k}equiv 1{bmod {b-1}},} so regardless of position, the value {displaystyle n{bmod {b}}-1} is the same – {displaystyle ab^{2}equiv abequiv a{bmod {b-1}}} – which is why digits can be meaningfully added. Concretely, for a three-digit number {displaystyle n=a_{1}b^{2}+a_{2}b^{1}+a_{3}b^{0}}

{displaystyle operatorname {dr} _{b}(n)equiv a_{1}b^{2}+a_{2}b^{1}+a_{3}b^{0}equiv a_{1}(1)+a_{2}(1)+a_{3}(1)equiv (a_{1}+a_{2}+a_{3}){bmod {b-1}}}.

To obtain the modular value with respect to other numbers n, one can take weighted sums, where the weight on the k-th digit corresponds to the value of b^{k} modulo n. In base 10, this is simplest for 2, 5, and 10, where higher digits vanish (since 2 and 5 divide 10), which corresponds to the familiar fact that the divisibility of a decimal number with respect to 2, 5, and 10 can be checked by the last digit (even numbers end in 0, 2, 4, 6, or 8).

Also of note is the modulus {displaystyle n=b+1}: since {displaystyle bequiv -1{bmod {b+1}},} and thus {displaystyle b^{2}equiv (-1)^{2}equiv 1{pmod {b+1}},} taking the alternating sum of digits yields the value modulo b + 1.

Using the floor function[edit]

It helps to see the digital root of a positive integer as the position it holds with respect to the largest multiple of b-1 less than the number itself. For example, in base 6 the digital root of 11 is 2, which means that 11 is the second number after {displaystyle 6-1=5}. Likewise, in base 10 the digital root of 2035 is 1, which means that {displaystyle 2035-1=2034|9}. If a number produces a digital root of exactly b-1, then the number is a multiple of b-1.

With this in mind the digital root of a positive integer n may be defined by using floor function lfloor xrfloor , as

{displaystyle operatorname {dr} _{b}(n)=n-(b-1)leftlfloor {frac {n-1}{b-1}}rightrfloor .}

Properties[edit]

{displaystyle operatorname {dr} _{b}(a_{1}+a_{2})=operatorname {dr} _{b}(operatorname {dr} _{b}(a_{1})+operatorname {dr} _{b}(a_{2})).}
{displaystyle operatorname {dr} _{b}(a_{1}-a_{2})equiv (operatorname {dr} _{b}(a_{1})-operatorname {dr} _{b}(a_{2})){bmod {b-1}}.}
{displaystyle operatorname {dr} _{b}(-n)equiv -operatorname {dr} _{b}(n){bmod {b-1}}.}
{displaystyle operatorname {dr} _{b}(a_{1}a_{2})=operatorname {dr} _{b}(operatorname {dr} _{b}(a_{1})cdot operatorname {dr} _{b}(a_{2})).}

Additive persistence[edit]

The additive persistence counts how many times we must sum its digits to arrive at its digital root.

For example, the additive persistence of 2718 in base 10 is 2: first we find that 2 + 7 + 1 + 8 = 18, then that 1 + 8 = 9.

There is no limit to the additive persistence of a number in a number base b. Proof: For a given number n, the persistence of the number consisting of n repetitions of the digit 1 is 1 higher than that of n. The smallest numbers of additive persistence 0, 1, … in base 10 are:

0, 10, 19, 199, 19 999 999 999 999 999 999 999, … (sequence A006050 in the OEIS)

The next number in the sequence (the smallest number of additive persistence 5) is 2 × 102×(1022 − 1)/9 − 1 (that is, 1 followed by 2 222 222 222 222 222 222 222 nines). For any fixed base, the sum of the digits of a number is proportional to its logarithm; therefore, the additive persistence is proportional to the iterated logarithm.[1]

Programming example[edit]

The example below implements the digit sum described in the definition above to search for digital roots and additive persistences in Python.

def digit_sum(x: int, b: int) -> int:
    total = 0
    while x > 0:
        total = total + (x % b)
        x = x // b
    return total

def digital_root(x: int, b: int) -> int:
    seen = set()
    while x not in seen:
        seen.add(x)
        x = digit_sum(x, b)
    return x

def additive_persistence(x: int, b: int) -> int:
    seen = set()
    while x not in seen:
        seen.add(x)
        x = digit_sum(x, b)
    return len(seen) - 1

In popular culture[edit]

Digital roots are used in Western numerology, but certain numbers deemed to have occult significance (such as 11 and 22) are not always completely reduced to a single digit.

Digital roots form an important mechanic in the visual novel adventure game Nine Hours, Nine Persons, Nine Doors.

See also[edit]

  • Arithmetic dynamics
  • Base 9
  • Casting out nines
  • Digit sum
  • Divisibility rule
  • Hamming weight
  • Multiplicative digital root

References[edit]

  1. ^ Meimaris, Antonios (2015), On the additive persistence of a number in base p, Preprint
  • Averbach, Bonnie; Chein, Orin (27 May 1999), Problem Solving Through Recreational Mathematics, Dover Books on Mathematics (reprinted ed.), Mineola, NY: Courier Dover Publications, pp. 125–127, ISBN 0-486-40917-1 (online copy, p. 125, at Google Books)
  • Ghannam, Talal (4 January 2011), The Mystery of Numbers: Revealed Through Their Digital Root, CreateSpace Publications, pp. 68–73, ISBN 978-1-4776-7841-1, archived from the original on 29 March 2016, retrieved 11 February 2016 (online copy, p. 68, at Google Books)
  • Hall, F. M. (1980), An Introduction into Abstract Algebra, vol. 1 (2nd ed.), Cambridge, U.K.: CUP Archive, p. 101, ISBN 978-0-521-29861-2 (online copy, p. 101, at Google Books)
  • O’Beirne, T. H. (13 March 1961), «Puzzles and Paradoxes», New Scientist, Reed Business Information, 10 (230): 53–54, ISSN 0262-4079 (online copy, p. 53, at Google Books)
  • Rouse Ball, W. W.; Coxeter, H. S. M. (6 May 2010), Mathematical Recreations and Essays, Dover Recreational Mathematics (13th ed.), NY: Dover Publications, ISBN 978-0-486-25357-2 (online copy at Google Books)

External links[edit]

  • Patterns of digital roots using MS Excel
  • Weisstein, Eric W. «Digital Root». MathWorld.

Нумерология: никакого гадания, только теория чисел

Время на прочтение
8 мин

Количество просмотров 19K

В данной статье речь пойдёт о таких понятиях теории чисел, как цифровой корень и ведический квадрат. 

Данная статья ничего не говорит о нумерологии, кроме того, что это псевдонаучная концепция.  

Цель данной статьи: показать математические закономерности вокруг вычисления цифрового корня и его связь с циклическими числами. 

Введение 

Несколько дней назад я решил написать незатейливую статью про нумерологическое сложение. Моей целью было показать, что даже такая незамысловатая операция может иметь большое количество интересных закономерностей. Многие из этих закономерностей я нашёл ещё в школьное время, когда скучал на уроках географии. При внимательном рассмотрении я нашёл больше закономерностей, чем ожидал, и это привело меня назад к моей любимой теме full reptend prime.  

После я внимательно изучил то, что нашёл, узнал, что многие из этих понятий уже существуют, и решил переписать статью заново, чтобы опираться на общеизвестные понятия. Помимо известных понятий я добавил собственные визуализации, чтобы сделать чтение немного более увлекательным.

Сумма цифр и цифровой корень 

Цифровой корень натурального числа в заданной системе счисления — это значение, получаемое итеративным расчётом суммы цифр, где на первой итерации происходит расчёт суммы цифр натурального числа, а на каждой следующей — расчёт суммы цифр результата предыдущей итерации. Операция выполняется до тех пор, пока вычисленное значение не становится меньше заданной системы счисления, т.е. до тех пор, пока оно не равняется одной-единственной цифре. 

Аддитивная стойкость натурального числа — это количество итераций, на которых нужно применить операцию суммы цифр, для того чтобы получить цифровой корень. 

Пример:   Цифровая сумма числа 142857 равна 1 + 4 + 2 + 8 + 5 + 7 = 27 

Цифровая сумма числа 27 равна 2 + 7 = 9 

Как следствие, цифровой корень числа 142857 = 9, аддитивная стойкость 142857 = 2.

Код для вычисления цифрового корня в произвольной системе счисления на языке Python:

def digitalRootRecurrent(number, base):
    digitSum = 0
    while number > 0:
        digitSum += number % base 
        number //= base
    if digitSum >= base:
        digitSum = digitalRootRecurrent(digitSum, base)
    return digitSum

Применение цифровой суммы 

Цифровые суммы применялись при расчёте контрольных сумм для проверки арифметических операций ранних компьютеров. Ранее, в эпоху ручного счета, Фрэнсис Исидор Эджуорт предложил использовать суммы 50 цифр, взятых из математических таблиц логарифмов, в качестве формы генерации случайных чисел; если предположить, что каждая цифра случайна, то по центральной предельной теореме эти цифровые суммы будут иметь случайное распределение, близкое к гауссову распределению. 

Цифровая сумма двоичного представления числа известна как вес Хэмминга или численность населения. Алгоритмы выполнения этой операции были изучены, и она была включена в качестве встроенной операции в некоторые компьютерные архитектуры и некоторые языки программирования. Эти операции используются в вычислительных приложениях, включая криптографию, теорию кодирования и компьютерные шахматы. 

Улучшение алгоритма вычисления цифрового корня 

При расчёте цифрового корня можно воспользоваться небольшой хитростью: если значение не равно нулю, и не равно основанию системы счисления — 1, можно получить значение цифрового корня просто операцией взятия остатка от деления на основание системы счисления — 1.

Модифицированный код:

def digitalRoot(number, base):
    if number == 0:
        return 0
    dR = number % (base - 1)
    if dR == 0:
        dR = base - 1
    return dR

Свойства цифрового корня 

Операция сложения 

Сделаем небольшую таблицу, для того чтобы изучить закономерности, каким образом вычисляется цифровой корень суммы двух чисел: 

Таблица для анализа операции цифрового корня суммы двух чисел.

Таблица для анализа операции цифрового корня суммы двух чисел.

Код для построения таблицы суммы:

firstTermRangeStart = 2
firstTermRangeEnd = 8
secondTermRangeStart = 1
secondTermRangeEnd = 9
base = 10

for j in range(firstTermRangeStart, firstTermRangeEnd + 1):
    print()
    for i in range(secondTermRangeStart, secondTermRangeEnd + 1):
        if i % (secondTermRangeEnd + 1) == 0:
            print()
        print('dr(',j,'+', i, ') =', digitalRoot(j + i, base), ' ', end='')

Как можно увидеть, цифровой корень суммы чисел равен цифровому корню суммы цифровых корней этих чисел: 

dr_{base}(a1 + a2) = dr_{base}(dr_{base}(a1) + dr_{base}(a2))

Операция вычитания 

Формула похожа на предыдущую, однако совпадает не полностью.  

Приведем контрпример:  455 — 123 = 332.

dr_{10}(455)=5; dr_{10}(123) = 6; dr_{10}(322) = 8

Как можно отметить, выражение 4 — 6 не даёт в результате 8, потому формулу сложения нужно модифицировать, чтобы она работала для операции вычитания:

dr_{base}(a1 - a2) = dr_{base}(base - 1 + dr_{base}(a1) - dr_{base}(a2))

Операция умножения 

Выведем вариацию таблицы умножения, для того чтобы исследовать эту операцию:

Расчет цифрового корня от двух множителей

Расчет цифрового корня от двух множителей

Код для вывода таблицы умножения:

firstTermRangeStart = 1
firstTermRangeEnd = 8
secondTermRangeStart = 1
secondTermRangeEnd = 9
base = 10

for i in range(secondTermRangeStart, secondTermRangeEnd + 1):
    print()
    for j in range(firstTermRangeStart, firstTermRangeEnd + 1):
        print('dr(',j,'*', i, ') =', digitalRoot(i * j, base), ' ', end='') 

Запишем значения для каждого множителя:

1) [1, 2, 3, 4, 5, 6, 7, 8, 9] 

2) [2, 4, 6, 8, 1, 3, 5, 7, 9] 

3) [3, 6, 9, 3, 6, 9, 3, 6, 9] 

4) [4, 8, 3, 7, 2, 6, 1, 5, 9] 

5) [5, 1, 6, 2, 7, 3, 8, 4, 9] 

6) [6, 3, 9, 6, 3, 9, 6, 3, 9] 

7) [7, 5, 3, 1, 8, 6, 4, 2, 9] 

8) [8, 7, 6, 5, 4, 3, 2, 1, 9] 

9) [9, 9, 9, 9, 9, 9, 9, 9, 9] 

Можно увидеть, что последовательности разбиваются на пары 1 и 8, 2 и 7, 3 и 6, 4 и 5. В каждой из пар сохраняется та же самая последовательность, но они представляют собой реверсированные копии друг друга, за исключением последнего элемента, который связан с множителем, равным основанию системы счисления — 1. 

Также отметим, что при умножении на основание системы счисления -1 цифровой корень будет равен основанию системы счисления — 1. При умножении на 1 значение цифрового корня второго множителя сохраняется. 

Визуализация последовательностей:

Последовательности для множителей 1, 2, 3, 4. Они же являются зеркальными для 8, 7, 6, 5.

Последовательности для множителей 1, 2, 3, 4. Они же являются зеркальными для 8, 7, 6, 5.

Последовательности можно рассмотреть как множество всех возможных замкнутых фигур с количеством точек, равным основанию системы счисления — 1, начиная с правильного n-угольника. Исключением является множитель, который не является взаимно простым с основанием системы счисления — 1, в данном случае это 3 и 6.

Для нахождения последовательности любой линии можно записать формулу:

multiplicationLine(firstFactor, secondFactor, base) = firstFactor * secondFactor mod base.

Если записать эти значения как множество пересечений всех множителей, мы получим в результате ведический квадрат. 

Ведический квадрат для десятичной системы счисления.

Ведический квадрат для десятичной системы счисления.

Подмножество данного ведического квадрата формирует собой латинский квадрат. Чтобы получить его, нужно вычеркнуть элементы, равные основанию системы счисления — 1. 

Приведение ведического квадрата к латинскому квадрату в десятичной системе счисления.

Приведение ведического квадрата к латинскому квадрату в десятичной системе счисления.

В результате мы получим: 

Подмножество ведического квадрата, составляющее латинский квадрат в десятичной системе счисления.

Подмножество ведического квадрата, составляющее латинский квадрат в десятичной системе счисления.

Если переставить некоторые из его строчек местами, мы получим последовательность циклических чисел. О том, каким образом должны быть осуществлены перестановки строчек, будет рассказано ниже при исследовании других операций с цифровым корнем. 

Ниже приведена ещё одна картинка ведических квадратов для систем счисления 100 и 1000. Белым отмечены самые большие значения клеток — соответствующие основанию системы счисления — 1, черным — самые маленькие, соответствующие 1.

Ведические квадраты для систем счисления 100 и 1000.

Ведические квадраты для систем счисления 100 и 1000.

Теперь вернемся к произведению. Цифровой корень произведения одиночных цифр в заданной системе счисления вычисляется при помощи соответствующего ведического квадрата.  

Для вычисления цифрового корня произведения двух чисел, которые содержат больше одной цифры, для начала нужно вычислить цифровой корень каждой из этих цифр, и после этого воспользоваться ведической площадью. 

dr_{base}(a1 * a2) = dr_{base}(dr_{base}(a1) * dr_{base}(a2))

Операция деления  

Рассмотрим те числа, которые дают при делении непериодические дроби, это 2, 5, 4, 8. 

Для того чтобы быть уверенными, что мы не допускаем ошибок, воспользуемся уже выведенными правилами и умножим результат деления на 1000; так как цифровой корень 1000 равен 1, то произведение будет иметь тот же самый цифровой корень. 

Таблица деления для делителей, которые взаимно просты с десятичной системой счисления.

Таблица деления для делителей, которые взаимно просты с десятичной системой счисления.
base = 10
divisors = [2, 4, 5, 8]

for j in divisors: 
    print()
    for i in range(1, base):
        value = (digitalRoot(int((i / j) * (base ** 3)), base))
        print('dr(',i, '/', j, ') =', value, '  ', end='') 

Тут бросаются в глаза несколько закономерностей.  Число 9 не только при умножении, но и при делении приводит к значению цифрового корня, равному 9. Интересное происходит также с числами 3 и 6, эти числа как при умножении, так и при делении дают абсолютно одинаковые значения цифрового корня. 

Запишем в таблицу череду делений: 

2) [5, 1, 6, 2, 7, 3, 8, 4, 9] — Эта последовательность встречалась в множителе 5

4) [7, 5, 3, 1, 8, 6, 4, 2, 9] — Эта последовательность встречалась в множителе 7

5) [2, 4, 6, 8, 1, 3, 5, 7, 9] — Эта последовательность встречалась в множителе 2

8) [8, 7, 6, 5, 4, 3, 2, 1, 9] — Эта последовательность встречалась в множителе 8

Операция деления для цифрового корня определена только для делителей, которые не являются взаимно простыми с основанием системы счисления. 

Операция возведения в степень 

Таблица возведения в степень: 

Таблица возведения в степень в десятичной системе счисления.

Таблица возведения в степень в десятичной системе счисления.
base = 10
.
for i in range(2, base - 2):
    print()
    for j in range(1, base - 1):
        print('dr(', j ,'^', i, ') =', digitalRoot(i ** j, base), ' ', end='') 

Здесь мы можем наблюдать цикличность. 

При внимательном рассмотрении других систем счисления можно сделать вывод, что эта череда связана с формированием остатков от деления, и таким образом она связалась с моим любимым классом простых чисел — full reptend prime. 

Для того чтобы пояснить это, рассмотрим операции возведения в степень в других системах счисления. Забегая вперед, скажу: наиболее интересными будут являться такие степени счисления, которые равны p^n + 1, где p — это простое число, а n — натуральное.  

Рассмотрим систему счисления 8, череда его значений будет равна [1, 3, 2, 6, 4, 5]. Именно такие же остатки от деления мы получаем при делении числа в десятичной системе счисления. 

Деление 1 на 7 в столбик. Здесь мы можем наблюдать остатки от деления [1, 3, 2, 6, 4, 5].

Деление 1 на 7 в столбик. Здесь мы можем наблюдать остатки от деления [1, 3, 2, 6, 4, 5].
Последовательность полученная при возведении в степень, в восьмеричной системе счисления.
Последовательность полученная при возведении в степень, в восьмеричной системе счисления.

Это свойство связано с тем, что вычисление цифрового корня можно осуществить при помощи альтернативной формулы расчета цифрового корня: 

dr_{base}(n) = n - (base - 1) * lfloorfrac{n-1}{base-1}rfloor

Ещё визуализации

Приведём ниже визуализации для операции возведения в степень для разных систем счисления, все они будут связанны с паттернами, образующимися в рациональных дробях 1/P, где P — это full reptend prime.

Остатки от деления, найденные в 6 системе счисления, связанные с числом 5.

Остатки от деления, найденные в 6 системе счисления, связанные с числом 5.
Остатки от деления, найденные в 10 системе счисления, связанные с квадратом числа 3.
Остатки от деления, найденные в 10 системе счисления, связанные с квадратом числа 3.
Остатки от деления, найденные в 12 системе счисления, связанные с числом 11.
Остатки от деления, найденные в 12 системе счисления, связанные с числом 11.
Остатки от деления, найденные в 14 системе счисления, связанные с числом 13.
Остатки от деления, найденные в 14 системе счисления, связанные с числом 13.
Остатки от деления, найденные в 18 системе счисления, связанные с числом 17.
Остатки от деления, найденные в 18 системе счисления, связанные с числом 17.
Остатки от деления, найденные в 20 системе счисления, связанные с числом 19.
Остатки от деления, найденные в 20 системе счисления, связанные с числом 19.
Остатки от деления, найденные в 26 системе счисления, связанные с квадратом числа 5.
Остатки от деления, найденные в 26 системе счисления, связанные с квадратом числа 5.
Остатки от деления, найденные в 28 системе счисления, связанные с кубом числа 3.
Остатки от деления, найденные в 28 системе счисления, связанные с кубом числа 3.

Теперь приведём несколько картинок из ведических квадратов, принцип их формирования очень прост, потому ограничимся небольшим количеством: 

Замкнутая фигура из 6 системы счисления, связана с числом 5.

Замкнутая фигура из 6 системы счисления, связана с числом 5.
Замкнутые фигуры из 8 системы счисления, связанные с числом 7.
Замкнутые фигуры из 8 системы счисления, связанные с числом 7.
Замкнутые фигуры из 12 системы счисления, связанные с числом 11.
Замкнутые фигуры из 12 системы счисления, связанные с числом 11.

Образование циклических чисел при помощи ведической площади и остатков от деления

После того как мы получили латинский квадрат из ведического квадрата, пронумеруем его строки последовательно:

Пронумерованный латинский квадрат.

Пронумерованный латинский квадрат.

Теперь мы можем переставить строки на основании череды остатков от деления, таким образом мы получим последовательность циклических чисел. Напомню, остатки от деления были равны [1, 3, 2, 6, 4, 5]. В результате у нас получится следующая картина:

Перестановки в пронумерованном латинском квадрате, в результате мы получили циклическое число.

Перестановки в пронумерованном латинском квадрате, в результате мы получили циклическое число.

Как можно наблюдать, первый столбец теперь представляет собой циклическое число 142857.

Выводы 

Несмотря на плохую репутацию нумерологии, операции суммы цифр и цифрового корня имеют пусть не широкое, но всё же практическое применение. 

Например, с помощью цифрового корня можно сформировать множество замкнутых n-вершинных звезд, многие из которых очень любят современные рокметал группы  :)

Пентаграмма - в представлении не нуждается :) Уроборос тут не случайно, о нем в следующей статье!

Пентаграмма — в представлении не нуждается :) Уроборос тут не случайно, о нем в следующей статье!
Tool предпочитают 8 систему счисления, связанную с простым числом 7.
Tool предпочитают 8 систему счисления, связанную с простым числом 7.
Slipknot тяготеют к десятеричной системе счисления, связанной с квадратом числа 3.
Slipknot тяготеют к десятеричной системе счисления, связанной с квадратом числа 3.

Как можно видеть, многие метал группы тоже любят теорию чисел!

Но лично я для своей метал группы решил выбрать анимированный логотип, составленный из одновременной визуализации периодических дробей, образованных из 90 рациональных дробей 1/91..90/91:

Почему я выбрал число 91, которое является произведением 7 и 13? Речь об этом пойдет в следующей статье :)

Почему я выбрал число 91, которое является произведением 7 и 13? Речь об этом пойдет в следующей статье :)

Если у кого-то есть дополнительная информация об описанных выше понятиях, пожалуйста присылайте её в комментарии, я буду очень благодарен!

Надеюсь, что вам было интересно, большое спасибо за внимание! 

Всем привет.

Недавно мне посчастливилось подготовить задачу про цифровой корень на Russian Code Cup. В результате прорешивания, а также комментариев к разбору, я заметил, что, к сожалению, отнюдь не каждый осведомлен о свойствах данной функции. Я просто не мог остаться равнодушным к этой проблеме.

Для начала рассмотрим определение цифрового корня, взятое с англоязычной Википедии с моим переводом:

Цифровой корень натурального числа — это цифра, полученная в результате итеративного процесса суммирования цифр, на каждой итерации которого для подсчета суммы цифр берут результат, полученный на предыдущей итерации. Этот процесс повторяется до тех пор, пока не будет получена одна цифра.
Например цифровой корень 65,536 это 7, потому что 6 + 5 + 5 + 3 + 6 = 25 и 2 + 5 = 7.

Для начала заметим очевидное свойство (dr(n) — цифровой корень числа n):

dr(n) = n,    n ≤ 9

Дальше докажем следующий факт: Сумма цифр числа n имеет такой же остаток при делении на 9, как и число n.

В доказательстве нам понадобится формула , докажем ее по индукции:
База:
Переход: .
Нужно доказать . Просто распишем
Таким образом мы доказали по индукции, что .

Вернемся к основному доказательству. Пусть , тогда: n = ak·10k + ak - 1·10k - 1 + … a1·10 + a0. По только что доказанной формуле: следовательно . Что и требовалось доказать.

Теперь по только что доказанному утверждению понятно, что остаток при делении на 9 — инвариант относительно взятия цифрового корня, а поскольку сумма цифр числа меньше самого числа, если число больше 9, справедливы следующие две формулы:

Эти две формулы можно собрать объединить формулой:

Из этой формулы, например, следует периодичность цифрового корня.

Любая задача про цифровой корень становится легче при знании этого несложного факта, надеюсь, что кому-нибудь этот пост покажется полезным.

Поддержано грантом для одаренной молодежи А. А. Шалыто.

BarbaraPeach

0 / 0 / 0

Регистрация: 17.03.2020

Сообщений: 4

1

Цифровой корень

17.03.2020, 13:15. Показов 30412. Ответов 6

Метки if elseif, python 3.7, while() (Все метки)


Студворк — интернет-сервис помощи студентам

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Помогите найти промах в коде 
Задача :
 
Цифровой корень натурального числа получается следующим образом. Складываются все цифры данного числа. Процесс повторяется, пока в результате не будет получено однозначное число, которое и называется цифровым корнем числа.
 
Пример :
156
Должно вывести 3 т.к. 1 + 5 + 6 = 12, 1 + 2 = 3
Выводит : 1
 
 
 
 
 
n = int(input())
if n // 10 == 0 :
    print(n)
else :
    b = 10
    f = 0
    a = n % 10
    n -= a
    n //= 10
    b = a + b
    while n // 10 != 0 :
        a = n % 10
        n -= a
        n //= 10
        b = a + b
        f += 1
if f == 1 :
     res = b + n - 10
elif f == 0 :
     res = n
else :
    res = b - 10
while res // 10 != 0 :
    b = 10
    f = 0
    a = res % 10
    res -= a
    res //= 10
    b = a + b
print(res)



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

17.03.2020, 13:15

Ответы с готовыми решениями:

Найти цифровой корень
Цифровой корень
Цифровой корень натурального числа получается следующим образом. Складываются все…

Простой цифровой корень (ПЦК) натурального числа
Доброго времени суток всем пользователям!

Появилась проблема, не могу понять в чем проблема в…

Цифровой корень
Рассмотрим натуральное число и определим сумму его цифр, тогда сумму цифр полученого числа и так…

Цифровой корень
Помогите пожалуйста решить задачку.
Рассмотрим произвольное натуральное число N и найдем сумму его…

6

Эксперт Python

5407 / 3831 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

17.03.2020, 13:30

2

Цитата
Сообщение от BarbaraPeach
Посмотреть сообщение

Цифровой корень

Твой цифровой корень уже здесь нашли. Теперь ищи ты. Ссылка внизу.



0



Misha3007

Заблокирован

17.03.2020, 13:31

3

Лучший ответ Сообщение было отмечено BarbaraPeach как решение

Решение

Python
1
2
3
4
5
6
n = int (input())
while n > 9:
    i = int (n%10)
    n = n//10
    n = n + i
print(n)

palva, помоги ещё с этой задачей, пожалуйста



1



palva

3944 / 2858 / 665

Регистрация: 08.06.2007

Сообщений: 9,668

Записей в блоге: 4

17.03.2020, 15:18

4

Вы применяете функцию int. Значит, она разрешена. Наверно, разрешена и функция str. Тогда можно так:

Python
1
2
3
4
5
6
7
8
9
n = int(input())
 
s = str(n)
while len(s) > 1:
    n = 0;
    for i in s:
        n += int(i)
    s = str(n)
print(s)



1



u235

4379 / 2489 / 525

Регистрация: 07.11.2019

Сообщений: 4,134

17.03.2020, 22:13

5

Еще вариант:

Python
1
2
3
4
5
6
7
a=356
def f(x):
    if len(str(x))==1:
        return(x)
    else:
        return f(sum([int(i) for i in str(x)]))
print(f(a))



0



Status 418

Эксперт Python

3850 / 2133 / 568

Регистрация: 26.11.2017

Сообщений: 4,995

Записей в блоге: 2

18.03.2020, 06:49

6



0



1 / 1 / 0

Регистрация: 29.04.2020

Сообщений: 1

29.04.2020, 21:28

7

def digital_root(n):
return n%9 or n and 9

Держи еще решение



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

29.04.2020, 21:28

Помогаю со студенческими работами здесь

Цифровой корень
написать рекурсивную функцию для нахождения цифрового корня натурального числа

Цифровой корень
Доброго времени суток! Подскажите код цифрового корня натурального числа? Написал код для Delphi,…

Задача на цифровой корень
Составить программу нахождения цифрового корня натурального числа. Цифровой…

Цифровой корень числа
Найти цифровой корень натурального числа (складываются все цифры числа, затем все цифры
найденной…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

7

Задача:

Написать рекурсивную и нерекурсивную функцию,
которая принимает положительный целочисленный аргумент
и возвращает цифровой корень этого числа. Цифровой
корень числа вычисляется следующим образом.
Складываются все цифры числа, затем все цифры
найденной суммы и т.д. Процесс повторяется до тех пор,
пока в результате не будет получено однозначное число
(цифра), которое и является цифровым корнем.

Начнем с нерекурсивного варианта.

Весь исходный код такой:

[cpp]
#include <locale.h>
#include <conio.h>

int SumOfDigits(int N)
{
int d=0, sum = 0;
while (N != 0)
{
d = N % 10;
sum  +=  d;
N = N / 10;
}
return sum;
}
int RootOfNumber (int k)
{
while (k>9)
{
k = SumOfDigits(k);
}
return k;
}

int main()
{
setlocale(LC_ALL, «Russian»);

int N;
printf («Введите целое число:n»);
scanf («%d», &N );
printf («Сумма цифр числа %d = %dn», N, RootOfNumber (N));

getch();

return 0;
}

[/cpp]

в функции main всё достаточно просто: сначала устанавливается русская локаль ( setlocale(LC_ALL, «Russian»);), затем пользователю выдается приглашение ввести число и это число считывается в переменную n целого типа. После этого печатается результат работы функции int RootOfNumber(int k).

Рассмотрим ее подробнее.

[cpp]

int RootOfNumber (int k)
{
while (k>9)
{
k = SumOfDigits(k);
}
return k;
}

[/cpp]

В нее передается целое число и пока оно содержит больше 1 знака (условие k > 9) выполняется вызов функции для складывания чисел внутри числа. Вызывается она с разными аргументами. У меня это k. На каждом витке цикла это число уменьшается, и рано или поздно оно станет меньше 10. Тогда функция вернет значение.

И последняя функция, которая просто вычисляет сумму цифр внутри числа:

[cpp]

int SumOfDigits(int N)
{
int d=0, sum = 0;
while (N != 0)
{
d = N % 10;
sum  +=  d;
N = N / 10;
}
return sum;
}

[/cpp]

Принимает целое число N. И пока N не станет равным нулю делит это число на 10 (основание системы счисления) и прибавляет остаток от деления к сумме, после чего делит N на 10 еще раз, но в этот раз уже записывает не остаток от деления, а целую часть. Так как происходит округление, то рано или поздно это число станет равным нулю.

Рекурсивный вариант той же функции:

Примечание: опубликован лишь код функции, так как ее вызов идентичен описанному выше.

[cpp]

int RootOfNumber(int N)
{
int d, sum = 0;
while (N != 0)
{
d = N % 10;
sum = sum + d;
N = N / 10;
}

if(sum<10)
{
return sum;
}
else
{
RootOfNumber(sum);
}
}

[/cpp]

Фишка рекурсивных функций в том, что она вызывает сама себя внутри себя. В этом коде нет дополнительной функции, которая считала бы сумму, но код содержится внутри. Т.е сначала на функцию подается число, для которого хорошо бы посчитать корень, далее для этого числа считается сумма его чисел и проверяется условие выхода из рекурсии — является ли число однозначным, т.е меньше 10. Если да, то выходим из рекурсии и возвращаем число, иначе — вызываем еще раз эту же функцию, но уже с новой суммой.

Понравилась статья? Поделить с друзьями:
  • Как найти активность вещества
  • Как найти нод кратко
  • Видео прототип 2 как найти
  • Как найти искру на ваз 2114
  • Как найти угол бета формула