лень для задач великої алгоритмічної складності: дисертація.- Ставрополь: СГУ, 2009, 192 с.
. Макоха А.Н., Сахнюк П.А., Червяков Н.І. Дискретна математика: навчальний посібник.- М .: ФИЗМАТЛИТ, 2005. 368 с.
. Фомін С.В. Популярні лекції з математики. Системи числення. Випуск 40 - М .: Наука, 1987. 48 с.
. Червяков Н. І., лобесил М. В. Алгоритм цілочисельного ділення в системі залишкових класів.- Інфокомунікаційні технології, 2007. Том 5. №4. 8-13 с.
. Червяков Н.І., Сахнюк П.А., Шапошников А.В., Ряднов С.А. Модулярні паралельні обчислювальні структури нейропроцессорних систем.- М .: ФИЗМАТЛИТ, 2003. 288 с.
. Червяков Н.І. Застосування системи залишкових класів у цифрових системах обробки і передачі інформації.- Ставрополь: СВВІУС, 1985. 68 с.
. Чернова М.В., Сахнюк П.А. Методичні рекомендації з виконання дипломних робіт для студентів спеціальності 010100 «Математика».- Ставрополь: Вид-во СГУ, 2011. 30 с.
. Шестаков А.П. Введення в інформатику. Лабораторні роботи.- Перм. ун-т: Пермь, 1999. Ч.I - 56 с.
ДОДАТОК
gt; restart:
gt; Prost:=array (1..10, [2,3,5,7,13,23,43,79,157,313]):
gt; # Введення діленого А і дільника В:
gt; A:=36543268656;:=65555;
gt; # Вибір системи підстав:
gt; Modul:=array (1..10):
gt; P:=1 ::=0: i from 1 to 10 do (P lt;=A or P lt;=B) then:=P * Prost [i]: [i]:=Prost [i] ::=n + 1: if: do:
gt; # Переклад дільника В в СОК:
gt; Bs:=array (1..n):
gt; for i from 1 to n do [i]:=B mod Modul [i]: do:
gt; print (Bs);
gt; # Переклад дільника В в ОПСС:
gt; Bp:=array (1..n + 1,1..n) ::=array (1..n):
gt; for j from 1 to n do [1, j]:=Bs [j]: do:
gt; for i from 1 to n do [i]:=Bp [i, i]: j from 1 to n do (i lt; j) then [i + 1, j]:=((Bp [i, j] -b [i]) * ((1/Modul [i]) mod Modul [j])) mod Modul [j] [i + 1, j]:=0if: do: do:
gt; print (b);
gt; # Визначення приблизного дільника:
gt; bpribl:=1:
Q:=n:
k:=1:
gt; while (b [Q]=0) do:=Q - 1do: (b [Q] lt; Modul [1]) then:=Modul [1] :( bpribl=1) do (b [Q] gt;= Modul [k] and b [Q] lt; Modul [k + 1]) then:=Modul [k + 1]:=k + 1if: do: if: i from (Q - 1) to 1 by - 1 do :=bpribl * Modul [i]: do:
gt; print (bpribl);
gt; # Розподіл методом Ферма:
gt; q:=1: aprom:=A: Ch:=0: i:=0:
gt; while (q lt; gt; 0 and aprom lt; gt; 0) do:=floor (aprom/bpribl) ::=aprom ::=aprom-B * q ::=Ch + q ::=i + 1: do:
gt; if (q lt; gt; 0 and aprom=0) then:=Ch + q: if: (q=0 and apromp gt;=B) then:=Ch + 1: if:
gt; print (i); (Ch);