Алгоритм разложения чисел на простые множители.

Алгоритм А (Разложение на простые множители путем деления). По данному положительному целому числу N этот алгоритм находит простые множители p1р2 ≤ … ≤ pt числа N. В этом методе используется вспомогательная последовательность пробных делителей

d = d0 < d1 < d2 < d3 < …,

которая включает в себя все простые числа < (и, если это удобно, может содержать числа, не являющиеся простыми). Последовательность чисел di должна также содержать по крайней мере одно значение, такое, что dk > .

А1. [Начальная установка.] Присвоить t ← 0, k ← 0, nN. (В ходе выполнения алгоритма переменные t, k, n подчинены следующим условиям: "n = N/p1...pt и n не имеет простых множителей, меньших dk".)

А2. [n = 1?] Если n = 1, алгоритм заканчивается.

A3. [Разделить.] Присвоить q , r n mod dk. (Здесь q и r - соответственно частное и остаток от деления числа n на dk.)

А4. [Остаток равен нулю?] Если r ≠ 0, то перейти к шагу А6.

А5. [Множитель найден.] Увеличить t на 1 и присвоить ptdk, nq. Возвратиться к шагу А2.

А6. [Частное мало?] Если q > dk, увеличить k на 1 и возвратиться к шагу A3.

А7. [n — простое число.] Увеличить t на 1, присвоить ptn и завершить выполнение алгоритма.

Рис.32. Алгоритм разложения числа на простые множители.

Пример.

Разложение на простые множители числа N = 25852. Сразу же находим, что N = 2 · 12926; следовательно, р1 = 2. Далее, 12926 = 2 · 6463, так что р2 = 1. Но теперь число n = 6463 не делится на числа 2, 3, 5, ..., 19; находим, что n = 23 · 281; значит, р3 — 23. В итоге имеем 281 = 12 · 23 + 5 и 12 ≤ 23, т. е. р4 = 281.

 

Алгоритм Евклида.

Разделить целое число a на число b с остатком – это значит найти такие числа q и r c 0 £ r < |b|, при которых выполняется равенство

a = q · b + r.

Разделить многочлен f на многочлен g с остатком – это значит найти такие многочлены q и r c 0 £ deg r < deg g, при которых выполняется равенство

f = q · g + r.

Для вычисления НОД(r0 = a, r1 = b) производится деление с остатком по следующей схеме:

a = r0 = q1r1 + r2,

b = r1 = q2r2 + r3,

.....

rm-2 = qm-1bm-1 + rm,

rm-1 = qmrm.

Работа алгоритма Евклида основана на том, что отображение сохраняет наибольший общий делитель.

Отображение работает до a = НОД, b = 0.

Пример.

НОД(21, 12) = НОД (21 (mod 12), 12) =

= НОД(12, 9) = НОД (12 (mod 9), 9) =

= НОД(9, 3) = НОД (9 (mod 3), 3) =

= НОД(3, 0) = 3

Работа бинарного алгоритма нахождения НОД основана на следующем ряде отображений, также сохраняющих НОД:

Отображения работают до (a – b) /2 = 0. НОД = b.

Пример.

НОД(21, 12) = НОД (21, 12 / 2) =

= НОД(21, 6) = НОД (21, 6 / 2) =

= НОД(21, 3) = НОД ((21 – 3) / 2, 3) =

= НОД(9, 3) = НОД ((9 – 3) / 2, 3) =

= НОД(3, 3) = НОД ((3 – 3) / 2, 3) =

= НОД(0, 3) = 3

Во всех вышеперечисленных рассуждениях принимается a ³ b.








Дата добавления: 2016-02-13; просмотров: 3328;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.