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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.96
nekogdamne
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 7
#1

Алгоритм Евклида с использованием рекурсии - C++

04.07.2010, 10:45. Просмотров 3448. Ответов 3
Метки нет (Все метки)

Моя реализация алгоритма Евклида с использованием рекурсивной функции.

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//Program finds greatest common divisor of two natural numbers.
#include <iostream>
using namespace std;
 
int GCD(int number1, int number2);
 
int main()
{
    int numb1, numb2, min, max, div;
 
    cout << "Enter the first number: ";
    cin >> numb1;
 
    cout << "Enter the second number: ";
    cin >> numb2;
 
    if (numb1 > numb2)
        {
            max = numb1;
            min = numb2;
        }
 
    else
        {
            min = numb1;
            max = numb2;
        }
 
        div = GCD(min, max);
        cout << "Greatest common divisor is: " << div;
 
    return 0;
}
 
int GCD(int min, int max)
{
    int temp, mod;
 
    mod =  max % min;
 
    if (mod == 0)
        return min;
 
    else
        temp = min;
        min = mod;
        max = min;
 
        GCD(min, max);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2010, 10:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Алгоритм Евклида с использованием рекурсии (C++):

Есть ли в этой программ алгоритма Евклида использование рекурсии? - C++
#include &lt;iostream&gt; using namespace std; int GCD(int number1, int number2); //------------------ int main() { int numb1,...

Алгоритм Евклида - C++
Привет всем. Задача такова, надо написать программу на С++ для поиска Самого Малого Кратного (СМК) по алгоритму Евклида. Дано три...

Алгоритм Евклида - C++
Здравствуйте! Подскажите пожалуйста какие ошибки есть в алгоритме, который я составил? int gcd (int a, int b) { int t; if...

алгоритм евклида - C++
не могу выкупить ничего что происходит и как решить. вот мое задание : : : : Даны натуральные а и b, не равные 0 одновременно. Найти d =...

Визуализировать алгоритм Евклида - C++
Визуализировать алгоритм эвклида

Расширенный алгоритм Евклида - C++
Здравствуйте, форумчане! Подскажите пожалуйста как реализовать такое задание(код самого алгоритма Евклида прилагается): Программа должна...

3
pannaruto
11 / 11 / 2
Регистрация: 12.05.2010
Сообщений: 29
04.07.2010, 11:21 #2
Например
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
int GCD( unsigned int num1, unsigned int num2 )
{
    if( num1 == 0 ) return num2;
    return GCD( num2 % num1, num1 );
}
 
int main()
{
    cout << "GCD(3,5)" << GCD(3,5) << endl;
    cout << "GCD(4,6)" << GCD(4,6) << endl;
    cout << "GCD(6,4)" << GCD(6,4) << endl;
 
    system("pause");
}
0
Хохол
Эксперт С++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
04.07.2010, 11:23 #3
C++
1
2
3
4
int gcd(int x, int y)
{
        return y ? gcd(y,x%y) : x;
}
0
nekogdamne
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 7
04.07.2010, 14:44  [ТС] #4
Извините, допустил ошибку в теле функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int GCD(int min, int max)
{
    int mod;
 
    mod = max % min;
    cout << max << " % " << min << " = " << mod << endl;
 
    if (mod == 0)
        return min;
 
    else
        max = min;
        min = mod;
 
        GCD(min, max);
}
Полный код программы
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//Greatest common divisor. This piece of shi... code works well now.
#include <iostream>
using namespace std;
 
int GCD(int number1, int number2);
 
int main()
{
    char c = 'y';
    while(c == 'y')
    {
    int numb1, numb2, min, max, gcd;
 
    cout << "Enter the first number: ";
    cin >> numb1;
 
    cout << "Enter the second number: ";
    cin >> numb2;
 
    if (numb1 > numb2)
        {
            max = numb1;
            min = numb2;
        }
 
    else
        {
            min = numb1;
            max = numb2;
        }
 
        gcd = GCD(min, max);
        cout << "Greatest common divisor is: " << gcd << endl;
 
    cout << "Do you want to find GCD of another two numbers?\n";
    cout << "Press 'Y' for 'yes' or any other key to exit.\n";
    cin >> c;
 
    if (c == 'Y')
        c = 'y';
    }
    return 0;
}
 
int GCD(int min, int max)
{
    int mod;
 
    mod = max % min;
    cout << max << " % " << min << " = " << mod << endl;
 
    if (mod == 0)
        return min;
 
    else
        max = min;
        min = mod;
 
        GCD(min, max);
}
0
04.07.2010, 14:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2010, 14:44
Привет! Вот еще темы с ответами:

Расширенный алгоритм Евклида - C++
Дело движется к реализации RSA, но уже на этом этапе возникли проблемы. Дело в том что у меня большие числа реализованы на массивах (под...

Необычный алгоритм Евклида - C++
Помогите,пожалуйста!Написал програму,не могу найти ,где в ней ошбка.Условие:дано натуральное число n ичислаа1,а2,а3,...,аn,которые вводятся...

Реализовать обобщенный алгоритм Евклида - C++
Ребят,необходимо реализовать обобщенный алгоритм Евклида. Заранее благодарен! Добавлено через 3 минуты желательно с...

Алгоритм Евклида. Переведите с Паскаля на С++ - C++
begin g 0 : = b; g 1 : = a; i : = 1 while g i ! = 0 do begin ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru