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

Расширенный алгоритм Евклида - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Класс дельта http://www.cyberforum.ru/cpp-beginners/thread1105627.html
Создать класс дельта таким образом что бы каждый объект имел свой персональный номер (дескриптор объекта) и функцию которая возвращает его значение Добавлено через 21 час 18 минут #include...
C++ Дано пятизначное натурально число. Если последняя цифра больше первой то их нужно поменять местами Помогите дополнить задачу.Дано пятизначное натурально число. Если последняя цифра больше первой то их нужно поменять местами. #include <stdio.h> #include <conio.h> main() } unsigned long int... http://www.cyberforum.ru/cpp-beginners/thread1105625.html
C++ Как внести класс в пространство имён
Есть задача, которую решил, там надо было поработать в пространстве имён. В следующей необходимо было это всё переделать под класс, находящийся в пространстве имён. 2 файла сделал, а с...
Как с помощью cin ввести нуль терминированную строку? C++
Как с помощью cin ввести "законченную" строчку, имеется в виду символ ноль. таким образов не вводится. какие есть варианты? cin >> ptr1; ptr1 = '\0';
C++ Замена подстроки в строке http://www.cyberforum.ru/cpp-beginners/thread1105582.html
Так как не нашел алгоритм стемминга для C++, то пришлось что-то придумывать самому. Так вот есть такой код int i; for(i = 0; i < ini.getUniSize(); ++i) // getUniSize() - извлекаем размер массива...
C++ Выход из лабиринта. Убрать повторяющиеся шаги Доброго времени суток! Прошу помощи Есть программа выход из лабиринта. Там в переменную r записывается текущий шаг. Получается маршрут прописан по самой матрице. Не могу домыслить как... подробнее

Показать сообщение отдельно
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
26.02.2014, 18:55  [ТС]
vasiatka, так будет правильно или нет?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
void extended_euclid(long a, long b, long *x, long *y, long *d)
{
  long q, r, x1, x2, y1, y2;
  if (b == 0) {
    *d = a, *x = 1, *y = 0;
    return;
  }
  x2 = 1, x1 = 0, y2 = 0, y1 = 1;
  while (b > 0) {
    q = a / b, r = a - q * b;
    *x = x2 - q * x1, *y = y2 - q * y1;
    a = b, b = r;
    x2 = x1, x1 = *x, y2 = y1, y1 = *y;
  }
  *d = a, *x = x2, *y = y2;
}
long inverse(long a, long n)
{
  long d, x, y;
  extended_euclid(a, n, &x, &y, &d);
  if (d == 1) return x;
  return 0;
}
int main(void)
{
  long a = 5, n = 7;
  printf("Обратная от %ld по модулю %2ld равняется %ld\n", a, n, inverse(a, n));
  a = 2, n = 12;
  printf("Обратная от %ld по модулю %2ld равняется %ld\n", a, n, inverse(a, n));
  return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.