Может ли кто-нибудь указать сайт, на котором я могу найти алгоритм для эффективного вычисления целочисленного возведения в степень больших мощностей с помощью С#?
например. Я хочу рассчитать 2 ^ 60000 или 3 ^ 12345
Если это не домашнее задание, вы, вероятно, не хотите откатывать свою собственную реализацию произвольной точности возведения в степень. Вычисление больших показателей типа, который вы описываете, является сложным - производительность в стороне.
Я бы рекомендовал использовать одну из существующих арифметических библиотек произвольной точности, таких как GMP - большинство из них имеют библиотеки для доступа к ним из С#.
F # поддерживает арифметику произвольной точности с использованием класса BigInt (к которому вы также можете получить доступ с С#, если вы импортируете его в сборку). Тем не менее, я не знаю, насколько оптимизирована оптимизация BigInt.
Если вы просто пытаетесь узнать об эффективных алгоритмах для возведения в степень, вам может понадобиться изучить алгоритм Квадрат-и-умножить для экспоненцирование.
Целочисленное возведение в степень может быть эффективно рассчитано с использованием метода, называемого "возведение в квадрат", ссылка.
Этот метод также можно использовать для расчета модульной степени возведения в степень ссылка, которая используется в некоторых асимметричных методах шифрования, таких как RSA.
Проверьте это: IntX для работы с целыми числами LARGE. Возможно, вам придется написать свою собственную реализацию власти, но, поскольку поддерживается умножение, это не должно быть так сложно.
Редактировать по 280Z28: Другая реализация, которая включает в себя быстрое тестирование Pow, ModPow и primality, - это BigInteger реализация (Code Project), который я использовал в проектах Project Euler в прошлом - хотя теперь я работаю с .NET 4.0 и использую его System.Numerics.BigInteger.