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.