Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Продолжение листинга 18.2

Result := 0;
if (i<0) then Exit;
j := 31;
while (j>0) and (a[i] and (1 shl j) = 0) do Dec(j);
Result := i*32 + j + 1;
end;

procedure BN_a_setbit_k(var a: TBigNum; k: Integer);
begin
if (k<0) or (k>32*BIGNUM_DWORD-1) then
begin
Exit;
end;
a[k shr 5] := a[k shr 5] or (1 shl (k and 31));
end;

procedure BN_a_mod_b(var a,b,res: TBigNum);
var k: Integer;
var n1,n2,n3: TBigNum;
begin
FillChar(n3,sizeof(n3),0);
if (BN_a_cmp_b(b,n3)=0) then Exit;
Move(a,n1,sizeof(a));
while (BN_a_cmp_b(n1,b)>=0) do
begin
k := BN_a_upbit(n1) - BN_a_upbit(b);
BN_a_shl_k(b,k,n2);
if (BN_a_cmp_b(n2,n1)>0) then
begin
BN_a_shr_k(n2,1,n3);
Move(n3,n2,sizeof(n3));
end;
BN_a_sub_b(n1,n2,n3);
Move(n3,n1,sizeof(n3));
end;
Move(n1,res,sizeof(n1));
end;

procedure BN_a_div_b(var a,b,res: TBigNum);
var k: Integer;
var n1,n2,n3: TBigNum;
begin

Продолжение листинга 18.2

FillChar(res,sizeof(res),0);
FillChar(n3,sizeof(n3),0);
if (BN_a_cmp_b(b,n3)=0) then Exit;
Move(a,n1,sizeof(a));
while (BN_a_cmp_b(n1,b)>=0) do
begin
k := BN_a_upbit(n1) - BN_a_upbit(b);
BN_a_shl_k(b,k,n2);
if (BN_a_cmp_b(n2,n1)>0) then
begin
BN_a_shr_k(n2,1,n3);
Move(n3,n2,sizeof(n3));
Dec(k);
end;
BN_a_sub_b(n1,n2,n3);
Move(n3,n1,sizeof(n3));
BN_a_setbit_k(res,k);
end;
end;

procedure BN_a_exp_b_mod_c(var a,b,c,res: TBigNum);
var i,n: Integer;
var n1,n2,n3: TBigNum;
begin
FillChar(n3,sizeof(n3),0);
if (BN_a_cmp_b(c,n3)=0) then Exit;
for i := 0 to BIGNUM_DWORD do res[i] := 0;
if (BN_a_cmp_b(b,n3)=0) then
begin
res[0] := 1;
Exit;
end;
Move(a,n1,sizeof(a));
for i := 0 to BIGNUM_DWORD do n2[i] := 0;
n2[0] := 1;
n := BN_a_upbit(b)-1;
i := 0;
while (i<=n) do
begin
if ( (b[i shr 5] shr (i and 31)) and 1 = 1 ) then
begin

Продолжение листинга 18.2

BN_a_mul_b(n2,n1,n3);
BN_a_mod_b(n3,c,n2);
end;
BN_a_mul_b(n1,n1,n3);
BN_a_mod_b(n3,c,n1);
Inc(i);
end;
Move(n2,res,sizeof(n2));
end;

procedure BN_ab_GCD(var a,b,res: TBigNum);
var i: Integer;
var n1,n2,n3,nzero: TBigNum;
begin
res[0] := 1;
for i := 1 to BIGNUM_DWORD do res[i] := 0;
for i := 0 to BIGNUM_DWORD do nzero[i] := 0;
if (BN_a_cmp_b(a,nzero)=0) or (BN_a_cmp_b(b,nzero)=0) then Exit;
if (BN_a_cmp_b(a,b)>0) then
begin
Move(a,n1,sizeof(a));
Move(b,n2,sizeof(a));
end
else
begin
Move(b,n1,sizeof(a));
Move(a,n2,sizeof(a));
end;
while (BN_a_cmp_b(n2,nzero)<>0) do
begin
BN_a_mod_b(n1,n2,n3);
Move(n2,n1,sizeof(n1));
Move(n3,n2,sizeof(n3));
end;
Move(n1,res,sizeof(n1));
end;

procedure BN_a_modinv_b(var a,b,res: TBigNum);
var i: Integer;
var n1,n2,n3,n4,n5,n6,n7: TBigNum;
var nzero,none: TBigNum;




Переглядів: 308

<== попередня сторінка | наступна сторінка ==>
Продолжение листинга 18.2 | Продолжение листинга 18.2

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.004 сек.