Быстрое возведение в степень — различия между версиями
Bochkarev (обсуждение | вклад) |
Bochkarev (обсуждение | вклад) |
||
| Строка 2: | Строка 2: | ||
Пусть <tex>m=(m_{k}m_{k-1}...m_{1}m_{0})_2</tex> — |двоичное представление степени ''n''. Тогда <tex>n=m_{k} \cdot 2^{k}+m_{k-1} \cdot 2^{k-1}+...+m_{1} \cdot 2+m_{0}</tex>, где <tex>m_{k}=1, m_{i} \in \{ 0,1 \}</tex> и <tex>x^{n}=x^{((...((m_{k} \cdot 2+m_{k-1}) \cdot 2+m_{k-2}) \cdot 2+...) \cdot 2+m_{1}) \cdot 2 + m_{0}}</tex>. <br> | Пусть <tex>m=(m_{k}m_{k-1}...m_{1}m_{0})_2</tex> — |двоичное представление степени ''n''. Тогда <tex>n=m_{k} \cdot 2^{k}+m_{k-1} \cdot 2^{k-1}+...+m_{1} \cdot 2+m_{0}</tex>, где <tex>m_{k}=1, m_{i} \in \{ 0,1 \}</tex> и <tex>x^{n}=x^{((...((m_{k} \cdot 2+m_{k-1}) \cdot 2+m_{k-2}) \cdot 2+...) \cdot 2+m_{1}) \cdot 2 + m_{0}}</tex>. <br> | ||
| + | |||
| + | == Функция быстрого возведения в степень == | ||
| + | Функция int '''Power'''(int value, int pow) | ||
| + | 1. int result = 1; | ||
| + | 2. while (pow) { | ||
| + | 3. if (pow & 1) result *= value; | ||
| + | 4. value *= value; | ||
| + | 5. pow >>= 1; | ||
| + | 6. } | ||
| + | 7. return result; | ||
Версия 01:19, 12 октября 2010
Алгоритм быстрого возведения в степень — алгоритм, предназначенный для возведения числа x в натуральную степень n за меньшее число умножений, чем это требуется в определении.
Пусть — |двоичное представление степени n. Тогда , где и .
Функция быстрого возведения в степень
Функция int Power(int value, int pow)
1. int result = 1;
2. while (pow) {
3. if (pow & 1) result *= value;
4. value *= value;
5. pow >>= 1;
6. }
7. return result;