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

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

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

НОД - C++

26.01.2011, 01:58. Просмотров 846. Ответов 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++
Написать программу которая из двух чисел x и y ищет наибольший общий делитель

НОД - C++
Нужно доработать код, чтобы находить НОД трех чисел, пожалуйста) #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;locale.h&gt; using...

C++ НОД - C++
Создать функцию, вычисляющую НОД. Использую эту функцию, найти наибольший общий делитель элементов одномерного массива из 10-элементов. ...

вычисление нод - C++
int nod(int x, int y) { if ((y == 0) || (x==0)) return x; else return nod(y, x % y); ...

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

НОД 2-х чисел - C++
Всем привет. Вообще мне нужно написать программу на Прологе, которая с помощью рекурсии находит НОК 2-х чисел. Но я, честно, не совсем...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
4669 / 2495 / 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--;}
а мой первый реализованный алгоритм был вообще ужас.
раскладывал каждое из чисел на простые множители. и коэфициенты при них.
потом собирал результат как произведение простых множителей с бОльшими коэфициентами при них. =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2011, 16:08     НОД
Еще ссылки по теме:

поиск НОД - C++
даны натуральные числа n и m; найти НОД (n;m). Составить рекурсивную функцию вычесления НОД, основанную на соотношении НОД(n,m)=НОД(m,r),...

Нахождение НОД - C++
Программа ищет наибольший общий делитель, проблема в том что если ввести ,допустим, числа 25 и 5 ,то она выведет не наибольший, а все...

Рекурсия (НОД) - C++
Погомите найдити НОД (наибольший общий делитель) двух натуральных чисел на языке Cи, используя рекурсию. Если не получится готовый код...

Вычисление НОД - C++
Составить программу для вычисления НОД двух натуральных чисел вот еще одна програмка.

Нахождение НОД - C++
Здравствуйте, мне надо найти НОД чисел. Как это реализовать на языке C++ ?

НОК и НОД - C++
Здоров Всем ! Вот условие : Определить функцию для нахождения наименьшего общего кратного (НОК) и наибольшего общего...


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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
4669 / 2495 / 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     НОД
Ответ Создать тему
Опции темы

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