Форум программистов, компьютерный форум CyberForum.ru

Расчет наибольшего общего делителя двух натуральных чисел используя алгоритм эвклида - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ввод вложенного односвязного линейного списка http://www.cyberforum.ru/cpp-beginners/thread591835.html
Помогите, пожалуйста разобраться с вводом вложенного односвязного линейного списка. Вот хотя бы на таком примере структур: struct Ingredient { char NameIngr; float Sum; Ingredient *next; };
C++ Дано предложение, надо вывести слова встречающие более одного раза Помогите пожалуйста! Дано предложение, надо вывести слова встречающие более одного раза. Программа должна на С++ Заранее спасибо! http://www.cyberforum.ru/cpp-beginners/thread591817.html
По заданым N и K найти какая цифра будет стоять N-ой строке на K-ом месте и вывести её C++
Ограничения по времени: 2 секунды Ограничения по памяти: 256 megabytes Строки (цепочки цифр) создаются по следующему правилу. Первая строка из одного символа - "1". Каждая следующая задается так: записывается номер строки потом 2 раза предыдущая. Примет 1. 1 2. 211 3. 3211211 4. 432112113211211 По заданым N и K найти какая цифра будет стоять N-ой строке на K-ом месте и вывести её. Если...
Условия добавления в дерево C++
Привет, решаю задачку, не могу кое с чем разобраться. у меня задача добавить в дерево число, как концевой узел. если число меньше значения корня дерева, то добавить в левое дерево(это ОК), если больше, то в правое(это тоже ОК), а если равно то никуда ничего не добавлять, а просто пропустить его. то есть если у нас корень 5, и мы когда-то захотим вставить число 5, то мы должны будем просто...
C++ Массивы: составить вдвое меньший массив,элементами которого являются http://www.cyberforum.ru/cpp-beginners/thread591785.html
Дан массив a из n элементов. n - четное. Составить вдвое меньший массив,элементами которого являются : b1=a1+an; b2=a2+an-1 и т.д.
C++ Реализация графа Может кто-нибудь привести пример реализации графа-сети? подробнее

Показать сообщение отдельно
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 341
30.05.2012, 22:20     Расчет наибольшего общего делителя двух натуральных чисел используя алгоритм эвклида
Анель,
Цитата Сообщение от instagib Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
template <typename T>
T gcd (T a, T b) {
* * * * while (b) {
* * * * * * * * a %= b;
* * * * * * * * swap (a, b);
* * * * }
* * * * return a;
}
Для иллюстрации, алгоритм Евклида будет использован, чтобы найти НОД a = 1071 и b = 462. Для начала, от 1071 отнимем кратное значение 462, пока не получим знаменатель меньше чем 462. Мы должны дважды отнять 462, (q0 = 2), оставаясь с остатком 147
1071 = 2 × 462 + 147.
Затем от 462 отнимем кратное значение 147, пока не получим знаменатель меньше чем 147. Мы должны трижды отнять 147 (q1 = 3), оставаясь с остатком 21.
462 = 3 × 147 + 21.
Затем от 147 отнимем кратное значение 21, пока не получим знаменатель меньше чем 21. Мы должны семь раз отнять 21 (q2 = 7), оставаясь без остатка.
147 = 7 × 21 + 0.
Таким образом последовательность a>b>R1>R2>R3>R4>...>Rn в данном конкретном случае будет выглядеть так:
1071>462>147>21
Так как последний остаток равен нулю, алгоритм заканчивается числом 21 и НОД(1071, 462)=21.


Цитата Сообщение от instagib Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
* * int a, b,div;  \\1*
* * cout << "Input a: "; * *cin >> a; \\2*
* * cout << "Input b: "; * *cin >> b;  \\2*
* * div = gcd(a,b);  \\3*
* * cout << "Fraction: " << a << " / " << b; \\4*
* * a/=div; \\5*
* * b/=div;  \\5*
* * cout << endl << "Fraction: " << a << " / " << b; \\6*
* * cin.get(); \\ожидаем нажатия Enter для выхода.
* * return 0;
}
(*1)Тут 3 переменные - числитель (a), знаменатель(b) и Наиб.Общ.Делит.(div) который добудится функцией gcd(). Вводим значения в a и b(2*). потом находим наиб.общ.делит. - он сохранится в переменной div(3*).
Выводим старую дробь(чтоб было с чем сравнивать(4*). После, сокращаем числитель(a) и знаменатель(b) на НОД(5*). и выводим результат(6*).

Не по теме:

жмите кнопочку "Спасибо" ))

 
Текущее время: 23:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru