Форум программистов, компьютерный форум, киберфорум
Наши страницы

Возведение в степень по модулю. Большие числа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Эмуляция http://www.cyberforum.ru/cpp-beginners/thread847309.html
Написать функцию которая имеет на входе два числа с плавающей точкой типа float, но представленные как long int unsigned и выдает результат типа float сумма или разность третий операнд. Здравствуйте...
C++ Шаблоны функции Делаю задание по программированию, нужна явная специализация шаблона. Пишет ошибку: obj\Debug\main.o||In function `main':| C:\Users\sklad\Documents\CODEBLOCK\work8.6\main.cpp|16|undefined... http://www.cyberforum.ru/cpp-beginners/thread847289.html
const в конце объявления метода делает только *this константным? C++
То есть const в методе int foo(int x, int y) const; говорит, что внутри метода не будут переопределяться поля класса, а точнее const говорит, что *this будет константным? И на этом все?
C++ Дан массив размера N. Обнулить элементы массива, расположенные между его минимальным и максимальным элементами
помогите! ! ! работу нужно сделать в С++
C++ Поиск по базе в файле http://www.cyberforum.ru/cpp-beginners/thread847250.html
вот тут решил сделать базу данных в консоли смутил поиск ну не как он не хочет искать то что нужно помогите разобраться с этим поиском вот весь код базы может кому пригодиться... #include <stdio.h>...
C++ Проблемы с терминологией. Что такое : ключевые слова, спецификаторы, квалификаторы? Чаще всего встречаю только список ключевых слов, которые потом могут называться по другому, то есть в списке они ключевые слова почти все, но потом разные авторы называют их по разному, к примеру... подробнее

Показать сообщение отдельно
Leytak
0 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 10

Возведение в степень по модулю. Большие числа - C++

24.04.2013, 16:12. Просмотров 6752. Ответов 8
Метки (Все метки)

Всем привет.
У меня есть пару способов возведения в степень по модулю, но с большими числами не работает.
Требуется вычислить A^X mod P.
Нужно для реализации шифра RSA.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
unsigned long powmod(unsigned long a, unsigned long x, unsigned long p)
{
  unsigned long result = 1;
 
  while(x)
  {
      if (x%2==0)
      {
          x /= 2;
          a *= a % p;
      }
      else
      {
          x--;
          result *= a % p;
      }
  }
 
  return result % p;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
unsigned long powmod(unsigned long a, unsigned long x, unsigned long p)
{
   unsigned long result = 1;
   char x_bin[100];
   int t = int(log(x)/log(2.0));
   itoa(x, x_bin, 2);
   for(int i=t;i>=0;i--)
   {
      if(x_bin[i] == '1')
                 result *= a % p;
      a *= a % p;
   }
   result %= p;
   return result;
}
C++
1
2
3
4
5
6
7
8
unsigned long powmod(unsigned long a, unsigned long x, unsigned long p)
{
    if (x == 0) return 1;
    unsigned long res = powmod(a, x >> 1, p);
    res *= res;
    res %= p;
    return (x & 1)? (a * res) % p : res;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru