Выкладываю исходники возведения в степень по Горнера, 2 подхода(может кому пригодится, и в инете алгоритма почти нигде нет, пришлось рыться в книгах) . 1 Code: y = 1; r = (a * a) % m; for (int i = 0; i <= stepen.Length-1; i++) { if (i >= stepen.Length-1) { if (ch[i] == '1') y = (y * a) % m; } else { if (ch[i] == '1') y = ((y * y) * r) % m; else { y = (y * y) % m; } } 2 Code: r = a; if (x % 2 == 0)//четное y = 1; else//нечетное y = a; label16.Text = label16.Text + y.ToString() + ". "; for (int i = stepen.Length - 2; i >= 0; i--) { r = (r * r) % m; if (ch[i] == '1') y = (y * r) % m; } Если нужны исходники на С# пишите
Этот алгоритм принято называть схемой Горнера и гугл отлично знает про неё: Но, думаю, лишним не будет - лишь бы правильно было реализовано.