Научная статья на тему 'Периодические дроби'

Периодические дроби Текст научной статьи по специальности «Математика»

CC BY
923
100
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по математике, автор научной работы — Храброе Александр Игоревич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Периодические дроби»

Храброе Александр Игоревич

ПЕРИОДИЧЕСКИЕ ДРОБИ

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);

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Предположим, что множество M из теоремы о периодичности является подмножеством множества целых чисел. Построим алгоритм для определения длины периода в последовательности чисел xn. Для этого заметим, что все числа из периода и предпериода последовательности различны. Поэтому, если мы найдем в последовательности равные числа, то расстояние между ними будет кратно периоду. Будем последовательно вычислять пары чисел хк и х2к исходя из формул хк+1 = f (xk) и

2k+2

=f (f (х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 периода

воряют соотношениям

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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.

Храброе Александр Игоревич, кандидат физико-математических наук, ассистент кафедры анализа СПбГУ.

i Надоели баннеры? Вы всегда можете отключить рекламу.