Храброе Александр Игоревич
ПЕРИОДИЧЕСКИЕ ДРОБИ
1.00000
9_ 10 9_ 10 9_ 10 9_ 10 9
С периодическими дробями школьники впервые встречаются достаточно рано. Почти каждый, научившись делить в столбик, делал маленькое открытие: если поделить единицу на тройку, то в частном будут последовательно возникать все новые и новые тройки и этот процесс никогда не закончится. Многим это удавалось как-нибудь для себя объяснить. Кто-то двигался дальше и делил единицу на шестерку и обнаруживал, что повторение начинается только со второй цифры. Вопросы, связанные с периодическими дробями даже входят в школьную программу, но на их обсуждение у учителей обычно не хватает ни времени, ни учебного материала. Надеюсь, что эта статья поможет лучше познакомиться с периодическими дробями и вообще с понятием периодичности. В ней мы расскажем о том, почему возникают периодические дроби, о свойствах, которыми они обладают, и об алгоритмах, помогающих научить машину работать с ними. Все приводимые программы записаны на Паскале с использованием лишь
..если побелить единицу На
3 самых простых конструкции. 0.3333... С одной стороны, это позволяет использовать их просто как записи алгоритмов, с другой стороны, если их набрать на компьютере, добавив стандартное описание переменных, то можно будет сразу посмотреть на них в действии. В дальнейшем из-Г ложении нам понадобятся неко-
торые сведения из элементарной теории чисел. Приведем их кратко, без доказательств. Все подробности читатель может узнать из замечательной книжки И.М. Виноградова «Основы теории чисел».
Определение. Если разность целыгх чисел a и b делится на натуральное число m, то числа a и b называются сравнимыми по модулю m. Это записывается следующим образом: a ° b (mod m).
Определение. Функцией Эйлера j (п) называется количество чисел из множества 0, 1, 2, ..., n — 1, взаимно простых с п.
Теорема Эйлера. Если m > 1 и числа a и m взаимно просты, то
a j(m) = 1 (mod m).
Теорема Ферма. Если p — простое число и a не делится на p, то ap-1 ° 1 (mod p).
Определение. Число п называется показателем, к которому принадлежит a по модулю m, если п является наименьшим натуральным числом, для которого имеет место сравнение
an ° 1 (mod m).
Легко показать, что показатель числа а всегда является делителем ф (т).
ПОЧЕМУ ВОЗНИКАЮТ ПЕРИОДИЧЕСКИЕ ДРОБИ
Возьмем несократимую обыкновенную дробь а, у которой знаменатель не Ь
делится ни на 2, ни на 5, а числитель меньше знаменателя. Поделим в столбик числитель на знаменатель, то есть последовательно произведем действия
10а = + Г1
10^ = Ь#2 + г2
10^„-1 = Ч + г„,
где гк, это остатки от деления чисел на Ь, то есть числа, удовлетворяющие условию 0 < гк < Ь. Далее, поскольку а < Ь и гк < Ь, то все #к будут меньше 10 и, следовательно, являются цифрами частного от деления а на Ь.
Предположим, что числа гп и Ь имеют общий делитель ^ Заметим, что d ф 2, d ф 5, поскольку Ь не делится ни на 2 ни на 5. Тогда из равенства 10 г п -1 = Ь^п + гп следует, что гп-1 делится на d, из равенства 10 гп-2 = 4-1 + гп-1 - гп-2 следует что делится на d. Продолжая этот процесс дальше, получим, что и а делится на ^ откуда d = 1. Таким образом, мы получили, что все остатки гп взаимно просты с Ь, поэтому число различных остатков гп не превосходит ф(Ь).
Отсюда мы можем заключить, что в бесконечной последовательности остатков гп обязательно найдутся два равных, причем остатки начнут повторяться не позже чем через ф(Ь) шагов. А исходя из формулы 10гк-1 = Ь^к + гк, можно заключить, что ровно с этого же момента начнут повторяться и цифры #к в десятичном разло-
жении дроби
Ь
Выясним теперь чему равна длина периода. Для этого рассмотрим остатки, получающиеся при последовательном делении чисел 10а, 102а, 103а, ..., 10па на Ь. Несложно показать, что они равны г1, г2,
...6- беаса№г&ш мслерабг&ы&Косеии осенленк&б обязательна рлбямх,
г3, ..., гп. Когда в этой последовательности впервые получится остаток а, показатель п будет равен длине периода, а дальнейшие остатки будут повторяться:
Гп = a, Гп+1 = 1 Гп+2 = Ъ
и получившаяся десятичная дробь 0,4,14,24,3...4,п4,14,24,3-"4,п будет периодической. Таким образом, число цифр в периоде дро-а
би ь будет равна наименьшему показателю т, для которого 10та — а делится на Ь. Поскольку мы рассматриваем только несократимые дроби, то и число 10т — 1 делится на Ь. Отсюда заключаем, что длина периода равна показателю, к которому принадлежит 10 по модулю Ь. Итак, нами доказана
Теорема. Любая обыкновенная дробь
а
Ь, знаменатель которой не делится ни на 2 ни на 5, будет давать периодическую десятичную дробь. Длина периода этой дроби равна показателю, к которому принадлежит 10 по модулю Ь.
Эта теорема позволяет находить длины периодов дробей, знаменатель которых взаимно прост с 10.
фробеей..
Упражнение 1. Напишите программу, вычисляющую длину периода дроби со знаменателем b. Обратите внимание на то, что вычисляемый показатель п может быть достаточно большим для прямого вычисления 10п. Например, у дроби 1/19 длина периода составляет 18 цифр.
Решение:
k:=1; r:=10;
while r <> 1 do begin r:=(10*r) mod b; k:=k+1; end; write (k);
Упражнение 2. Напишите программу, последовательно выводящую на экран
a
десятичные знаки дроби —.
Решение: write ("0,"); l:=0; r:=1;
while l <> k do begin
write ((10*r) div b); r:=(10*r) mod b; l:=l+1; end;
Упражнение 3. Как нужно изменить алгоритмы из упражнений 1—2, если дроби считаются в системе счисления с основанием q ?
Предположим теперь, что знамена-a
тель дроби — произволен. Тогда b можно
представить в виде 2х • 5 у • B. Обозначим наибольшее из чисел х и у через z и рассмотрим несократимую дробь
...длиНа предпериода ра&На Наибольшему uf чисел x и y.
10 z • a = 2 z- x • 5 z- y • a = A b B B'
знаменатель которой взаимно прост с 10. 10z■a A
Тогда дробь —-— = — даст периодическую
b B десятичную дробь
k1 k2 ••• kz > q.1 q.2 ••• q.n q 1 q.i ■■■ qn •••>
длина периода которой равна показателю, к которому принадлежит 10 по модулю B. При обращении дроби в десятичную получится
к 1 k2 ••• kz q\ q-2 ••• qn q 1 q 2 ••• qn,
Таким образом, нами доказана Теорема. Любая обыкновенная дробь
a
—, знаменатель которой имеет вид 2х • 5y • B,
будет давать периодическую десятичную дробь. Длина периода этой дроби равна показателю, к которому принадлежит 10 по модулю B, а длина предпериода равна наибольшему из чисел х и у.
Таким образом, для нахождения длины периода и предпериода произвольной несократимой дроби можно сначала выделить из ее знаменателя степени двойки и пятерки, (таким образом найти число B) и, согласно упражнению 1, вычислить показатель, к которому принадлежит 10 по модулю B.
Упражнение 4. Напишите программу, вычисляющую длины периода и пред-периода согласно этой схеме.
Решение:
{Выделение из знаменателя дроби} {наибольшей степени двойки } s:=b mod 2; l:=0;
while s = 0 do begin b:=b div 2; s:=b mod 2; l:=l+1; end;
{Выделение из знаменателя дроби} {наибольшей степени пятерки} s:=b mod 5; l1:=0;
while s = 0 do
begin b:=b div 5; s:=b mod 5; l1:=l1+1; end;
{Вычисление длины периода дроби} {с новым знаменателем} k:=1; r:=10;
while r <> 1 do begin r:=(10*r) mod b; k:=k+1; end;
writeln (k) ; {Длина периода данной} {дроби}
if l1 > l then writeln (l1)
else writeln (l); {Наибольшее из} {чисел l и l1 s длина} {предпериода данной дроби}
Однако получившаяся программа оказалась весьма большой. Попробуем придумать другой способ для нахождения длины периода в десятичной записи обыкновенной дроби. Для этого забудем про то, что он равен показателю 10 по модулю b и вспомним другие его свойства. Мы установили, что повторение остатков rk влечет за собой повторение цифр в десятичном представлении обыкновенной дроби. Также мы выяснили, что в последовательности остатков все периодически повторяющиеся члены различны. Поэтому достаточно найти такое k, что rn+k = rk, где n — произвольное число, большее длины пред-периода. Легко показать, что длина пред-периода не может быть больше знаменателя (можно даже доказать, что она не превосходит n = log2 b = ln b/ln 2 ).
Программа, выполняющая требуемые действия, написанная на Паскале, будет выглядеть так: r:=a;
for l:=0 to round (ln(b)/ln(2)) do
r:=(10*r) mod b; q:=r;
{ q - n-тый член последовательности} {остатков, где n = log2 b} r:=(10*r) mod b; k:=1;
{ r - (n+^-тый член} {последовательности остатков}
while r <> q do begin r:=(10*r) mod b; k:=k+1; end; write (k);
ТЕОРЕМА О ПЕРИОДИЧНОСТИ
И АЛГОРИТМ НАХОЖДЕНИЯ ДЛИНЫ ПЕРИОДА
Теорема. Предположим, что M — множество из конечного числа элементов, а f — функция из M в M. Тогда при всех x из M последовательность элементов x, f (x), f ( f (x)), f ( f ( f (x))), начиная с некоторого момента, станет периодичной. Кроме того, если при различных x и y элементы f (x) и f (y) также различны, то период начинается с первого члена.
Давайте докажем это утверждение. Для краткости обозначим x0 = x, x1 = f (x), x2 = f (f (x)) и т. д., n-ый член последовательности будет определяться по формуле xn = f (xn-1). Заметим, что совпадение членов последовательности вызывает совпадение и следующих за ними, а значит, и всех последующих. Таким образом, достаточно показать, что когда-нибудь очередной член последовательности станет равным одному из предыдущих. Но иначе и быть не может, поскольку различных членов последовательности может быть только конечное число, а сама последовательность бесконечна. Здесь мы воспользовались принципом Дирихле. Заодно мы доказали, что последовательность начнет повторяться не позже члена, номер которого равен числу элементов множества M.
Предположим, что при различных x и y элементы f (x) и f (y) различны, но за-
рассмотрим пари последовательных остатков,,.
цикливание началось с члена хк, где к > 1, иными словами, хк = хк+п, но хк-1 Ф хк+п-1. Тогда если взять различные элементы х = хк-1 и у = хк+п-1, то получим, что элементы / (х) = хк и / (у) = хк+п также различны. Противоречие. Теорема о периодичности полностью доказана.
Обычно при использовании теоремы о периодичности для некоторой последовательности хк в качестве множества М приходится использовать не множество возможных значений последовательности хк, а некоторое большее вспомогательное множество. Например, множество остатков при доказательстве периодичности десятичных дробей или пар остатков как в упражнении 6.
Упражнение 5. Выведите из теоремы о периодичности периодичность десятичного разложения обыкновенной дроби.
Упражнение 6. Докажите, что последовательность остатков от деления чисел Фибоначчи на натуральное число п периодична и длина ее периода не превосходит п2. Напишите программу, вычисляющую длину периода. Напомним, что числа Фибоначчи определяются, исходя из формУл: Р1 = Р2 = 1 = ^п-1 + К*
Решение: Рассмотрим пары (ип, ип+1) последовательных остатков от деления чисел Фибоначчи на п и функцию / заданную на множестве всех пар чисел от 1 до п — 1 и определяемую формулой / (и, V) = (V, -), где число — равно остатку от деления суммы и + V на п. Тогда (ип, ип+1) = /(ип-1, ип). По теореме о периодичности мы заключаем, что, начиная с некоторого момента, пары чисел (ип, ип+1) начнут повторяться, причем последовательность будет чисто периодической.
=1 =2 =1
while (p <> 1) or (q <> 1) do {Пара p, q s n-тый член} {последовательности пар остатков}
begin r:=p;
p:=(q+r) mod n;
q:=r;
{Вычисление новой пары остатков p,q} k:=k+1; end; write (k);
Предположим, что множество M из теоремы о периодичности является подмножеством множества целых чисел. Построим алгоритм для определения длины периода в последовательности чисел xn. Для этого заметим, что все числа из периода и предпериода последовательности различны. Поэтому, если мы найдем в последовательности равные числа, то расстояние между ними будет кратно периоду. Будем последовательно вычислять пары чисел хк и х2к исходя из формул хк+1 = f (xk) и
2k+2
=f (f (х2к)). Когда окажется хк = х
2к
число к будет кратно периоду. (Приведите пример функции, для которой найденное число к не будет равно периоду). Далее, пос-
ледовательно вычисляя числа х
к+1'
4+2'
найдем наименьшее т, для которого хк = , оно и будет длиной периода после-
к+l
довательности х
к
k p
q {
= 1; = f(a); = f(f(a));
p =
q =x2k }
while p <> q do begin
= f(p); = f(f(q)); = k+1;
p q
k end
{Мы нашли k, такое, что p = xk = x2k,} {поэтому xk входит в периодическую} {часть и длина периода не больше k} m := 1;
q := f(p);
while p <> q do begin
q := f(q); {q = Xk+m}
m:=m+1; end;
{Мы нашли наибольшее m, такое, что} {числа xk, xk+1, ..., xk+m-1 различны,} {поэтому период равен m }
Упражнение 7. Приведите пример
функции f, позволяющей вычислять при
помощи описанного алгоритма длину пе-а
риода дроби ь.
Решение: Например, подходит функция f, переводящая число x в остаток от деления числа 10x на b.
Упражнение 8. Обозначим через f (n) сумму k-тых степеней цифр числа n.
а) Докажите, что для любого натурального числа n бесконечная последовательность n, f (n), f (f (n)), f (f (f (n)))... периодична.
б) Докажите, что у этой последовательности может быть сколь угодно длинный предпериод.
в) Напишите программу, при фиксированных k и n вычисляющую длину периода данной последовательности.
Лодсказка. Покажите, что для любого k найдется такое m, что сумма k-тых степеней цифр любого m-значного числа будет состоять из не более чем m знаков.
Упражнение 9. Докажите, что остатки от деления чисел nn на простое числоp образуют чисто периодическую последовательность. Напишите программу, вычисляющую длину периода этой последовательности.
Лодсказка. Из теоремы Ферма следует, что np-1 ° 1 (mod p), откуда nn ° nm ° km (mod p), где k — остаток от деления n на p, а m — остаток от деления n на p — 1. Отсюда следует, что в качестве множества M из теоремы о периодичности можно взять множество пар (k, m), где k принимает значения от 1 до p, а m от 0 до p - 2.
КВАДРАТИЧНЫЕ ИРРАЦИОНАЛЬНОСТИ И ПЕРИОДИЧЕСКИЕ ЦЕПНЫЕ ДРОБИ
Определение. Иррациональный корень квадратного уравнения с целыми ко-
"Ирибефи&е пример пл^баол&ющей
при помощи описаЯЛагл алгоритма, флиЯу периода фроби...
эффициентами называется квадратичном иррациональностью. Иными словами квадратичная иррациональность — число, имеющее вид
р + У Р Ч
где числа р и # — целые, а Б — натуральное число, не являющееся точным квадратом.
Определение. бесконечном ценном дробью называется выражение вида
1
ао +-1-
а1 +-1-
а2 +--
а3 + к
где а0 — целое число, а все остальные ап — натуральные числа.
Теорема. Для любого иррационального числа х0 существует разложение в бесконечную цепную дробь.
Мы не будем доказывать эту теорему, а лишь опишем алгоритм построения цепных дробей, отвечающих заданному числу х0. Читатели, интересующиеся доказательством этой теоремы, могут обратиться к книге Хинчина «Цепные дроби» или к книге Бухштаба «Теория чисел».
Для простоты предположим, что х0 > 1. Обозначим через а0 целую часть х и
возьмем х = —1— > 1. Поскольку х0 ир-
Х0 — а0
рационально, то х1 также будет иррацио-
^есканегной цепком уро&ш нальным числом, большим 1. Положим
a1 = [x1]* и x =
1
x2, тогда x2 — ир-
а1
рациональное число, большее 1. Продолжим этот процесс далее, то есть выполним последовательно операции 1
Х0 = а0 +
X = а1 +
xi ' J_
Х2 1_
Хз
x = а + -
n n
Хи-
ао [ x0
#2 [ x2
= [ xn ].
Если при помощи полученной последовательности натуральных чисел а0, а1, а2, ... составить цепную дробь
1
а1 +-
1
а2 +-
1
(1)
то она будет равна x0
Теорема Лагранжа. Всякая квадратичная иррациональность дает в разложении периодическую цепную дробь. И обратно, всякая периодическая цепная дробь является разложением некоторой квадратичной иррациональности.
Упражнение 10**. Выведите теорему Лагранжа из теоремы о периодичности.
Лодсказка. Предположим, что х0 является корнем уравнения ах2 + Ьх + с = 0. Покажите, что числа хк из алгоритма разложения являются корнями квадратных уравнений вида Ак х2 + Вк х + Ск = 0, где все Ак и Ск не превосходят 2|а х0| + |а| + |Ь| и удовлетворяют тождеству Вк2 — 4АкСк = = Ь2 — 4ас. Откуда следует, что различных чисел в последовательности {хк} — конечное число.
Упражнение 11*. Напишите программу, вычисляющую длину периода и находящую сам этот период для цепной дроби, построенной для квадратичной иррациональности вида лТо , где Б — натуральное число, не являющееся точным квадратом.
Лодсказка. Числа ак и хк, участвующие в алгоритме построения цепной дроби можно определить исходя из формул (докажите это!):
[xk], xu =
b +VD k
где первые два члена последовательностей {Ьк} и {ск} определяются по формулам
'1=
b2 #1С1
'1 и С1
= D —
c2 = 1 — a12c1 + 2a1b1, а остальные удовлет-
bn+1 = OA, — bn и
"^апиииЛе программу, ё-игисл&ющую fyMiMf периода
воряют соотношениям
c„+1 = c„-1 — 0,4 + 2 aA.
Вывод этих формул, разнообразные примеры разложений чисел в цепные дроби и нахождение этих разложений для чисел специального вида, а также множество интересных вопросов, близких к настоящей статье рассматривается в книге Вацлава Серпинского «Элементарная теория чисел» (Waclaw Sierprcski «Elementary
Квадратные скобки, как обычно, обозначают целую часть числа.
ао +
а3 + к
theory of numbers»), к сожалению, не переведенной на русский язык.
Упражнение 12**. Напишите программу, вычисляющую длину периода цепной дроби, построенной для данной квадратичной иррациональности, заданной при помощи трех натуральных чисел p, q и D по формуле
p + VD .
q
Проверить правильность разложений квадратичных иррациональностей в цепную дробь уже не так просто, как правильность разложений рациональных чисел в десятичную дробь, поэтому приведем несколько таких разложений. Они могут пригодиться для проверки правильности работы программы.
л/7 = (2; 1,1,1, 4) длина периода 4; л/41 = (6; 2, 2,12) длина периода 3; л/925 = (30; 2, 2, 2, 2, 60) длина периода 5;
л/2081 = (45; 1,1,1,1,1,1,1,1,1,1, 90)
длина периода 11;
1 + 413 = (1; 1, 6,1,1,1) длина периода 5;
Запись X = (¿0; ¿1, ¿2, ¿3, ¿4, к, Ь„ ) соответствует цепной дроби (1), где числа ат при т > п определяются по периодичности, то есть ак+п = ак при к = 1, 2, ..., п.
© Наши авторы, 2004. Our authors, 2004.
Храброе Александр Игоревич, кандидат физико-математических наук, ассистент кафедры анализа СПбГУ.