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

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

Войти
Регистрация
Восстановить пароль
 
Leff
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 23
#1

НОД - C++

26.01.2011, 01:58. Просмотров 744. Ответов 3
Метки нет (Все метки)

Извиняюсь за вопрос, просмотрел все но не нашел того, что нужно

Задание: Найти НОД 2 чисел

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# include <iostream>
# include <conio.h>
using namespace std;
int main(){
    int a,b,i;
cout<< "vvedite 2 4isla";
cin>>a;
cin>>b;
while (a%i!=0)||(b%i!=0){
 
    i=a<b?a:b;
    i--;}
cout<<"max="<< i;
return 0;
}
Что я неправильно написал ? Она даже не запускается...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2011, 01:58     НОД
Посмотрите здесь:

C++ Заданы натуральные числа m и n. Найти НОД(m,n) Составить программу которая будет содержать рекурсивную функцию вычисления НОД......
C++ НОД
C++ вычисление нод
Нахождение НОД C++
C++ C++ НОД
Рекурсия (НОД) C++
Длинный НОД C++
C++ Нахождение НОД
C++ НОД по Евклиду
НОД 2-х чисел C++
поиск НОД C++
C++ НОД

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
26.01.2011, 10:14     НОД #2
Leff,
Цитата Сообщение от Leff Посмотреть сообщение
Что я неправильно написал ? Она даже не запускается...
Вы неправильно написали вот что:

Цитата Сообщение от Leff Посмотреть сообщение
while (a%i!=0)||(b%i!=0){// значение i не определено и еще оба условия нужно брать в круглые скобки
К тому же Вы здесь пытаетесь использовать два алгоритма в одном. Лучше использовать какой-нибудь один алгоритм, например так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# include <iostream>
# include <conio.h>
using namespace std;
int main(){
int a,b,i;
cout<< "vvedite 2 4isla";
cin>>a;
cin>>b;
i=a;
while ((a%i!=0)||(b%i!=0)){
i--;}
cout<<"max="<< i;
return 0;
}
Но есть еще более оптимальный по времени алгоритм.
no0ker
101 / 88 / 4
Регистрация: 17.12.2010
Сообщений: 416
26.01.2011, 16:01     НОД #3
не знаю почему, но мне этот алгоритм показался каким то чУдным =)
C
1
2
while ((a%i!=0)||(b%i!=0)){
i--;}
а мой первый реализованный алгоритм был вообще ужас.
раскладывал каждое из чисел на простые множители. и коэфициенты при них.
потом собирал результат как произведение простых множителей с бОльшими коэфициентами при них. =)
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
26.01.2011, 16:08     НОД #4
Цитата Сообщение от no0ker Посмотреть сообщение
не знаю почему, но мне этот алгоритм показался каким то чУдным =)
Вообще-то этот алгоритм читался в Вашем коде.
Вот нормальный алгоритм:
C
1
2
3
4
5
6
7
8
9
int NOD(int a, int b)
{
    while(a>0 && b>0) 
        if(a>b)
            a%=b; 
        else
            b%=a; 
    return a+b;
}
Yandex
Объявления
26.01.2011, 16:08     НОД
Ответ Создать тему
Опции темы

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