Смекни!
smekni.com

Математические основы системы остаточных классов (стр. 19 из 19)

int __fastcall TForm1::NOD(int a, int b)

{

if( ( a == 0 )||( b == 0 ) )

{

return abs( a + b );

}

while( a != b )

{

if( a > b )

{

a -= b;

}

else

{

b -= a;

}

}

return b;

}

//Модуль нахождения обратного элемента по модулю N

int __fastcall TForm1::ObrElem(int a, int N)

{

int u1 = 0, u2 = 1, u3 = N;

int v1 = 1, v2 = 0, v3 = a;

int t1, t2, t3, q;

while(u3 != 1)

{

q = u3 / v3;

t1 = u1 - v1*q;

t2 = u2 - v2*q;

t3 = u3 - v3*q;

u1 = v1;

u2 = v2;

u3 = v3;

v1 = t1;

v2 = t2;

v3 = t3;

}

return u1 < 0 ? u1 + N : u1;

}

// Модуль возведения числа в степень по модулю N

int __fastcall TForm1::ModStep(int a, int d, int n)

{

int aBmodN = a;

int dtemp = d;

AnsiString binary = "";

while( dtemp > 1 )

{

binary += IntToStr( dtemp % 2 );

dtemp = floor( dtemp / 2 );

}

binary += dtemp;

for( int i = 1; i < binary.Length(); i++ )

{

aBmodN = aBmodN*aBmodN * ( binary[binary.Length() - i] == '0' ? 1 : a ) % n;

}

return aBmodN;

}

void __fastcall TForm1::Button3Click(TObject *Sender)

{

int q = 0;

int p = 0;

int *a = new int[256];

prost( a, 64 );

srand( GetTickCount() );

while( ( p == 0 )||( p > 64 ) )

{

p = a[ rand() % 64-1 ];

}

while( ( q == 0 )||( q > 64 ) )

{

q = a[ rand() % 64-1 ];

}

Edit1->Text = FloatToStr( p );

Edit2->Text = FloatToStr( q );

delete[] a;

}

// Модуль нахождения простых чисел на превышающих N методом решета Эратосфера

void __fastcall TForm1::prost( int *a, int n )

{

int b, c;

for( b = 1; b <= n; b++ )

{

a[b] = b;

}

for( b = 2; b <= floor( sqrt( n ) ); b++ )

{

c = 0;

c += ( b << 1 );

while( c <= n )

{

a[c] = 0;

c+= b;

}

}

}

Цитированная литература

1. Бухштаб А. А. Теория чисел – М: Наука, 1975 г.

2. Айерленд К. Классическое введение в современную теорию чисел. М: Мир, 1987.

3. Акушинский И. Л., Юдицкий Д. И. Машинная арифметика в остаточных классах. – М. Советское радио, 1968.

4. Амербаев В. М. Теоретические основы мащинной арифметики, - Алма –Ата: Наука, 1976.

5. Червяков Н. И. Применение нейронных сетей для прямого и обратного преобразования кодов в СОК. Вестник СГУ, Физ.-мат. науки, 1999.

6. Червяков Н. И. Применение системы остаточных классов в цифровых системах обработки и передачи информации. – Ставрополь: СВВиУС, 1984.

7. Червяков Н. И. Преобразование цифровых позиционных и непозиционных кодов в системах управления и связи. – Ставрополь: СВВиУС, 1985.

8. Коляда А. А., Пак И. Т. Модулярные структуры конвейерной обработки цифровой информации, - Минск: Университетское, 1992.

9. Онищенко С. М. Применение гиперкомплексных чисел в теории инерциальной навигации. Автономные системы, - Киев: Наукова думка, 1983.