Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Denis_Spitsyn
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 31
1

Наименьшее общее кратное трёх чисел

14.03.2013, 01:01. Просмотров 1486. Ответов 5
Метки нет (Все метки)

Нужно найти НОК трёх чисел, используя функции

Добавлено через 6 минут
Вот мой код для нахождения НОК(а,в) через НОД(а,в). Теперь, как я понимаю, необходимо найти НОК(НОК(а,в),с)).

Добавлено через 44 секунды
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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int NOD (int a, int b);   
int NOK (int a, int b);
 
void main ()
{
int a,b;
cout<<"Enter a: ";
cin>>a;
cout<<"Enter b: ";
cin>>b;
cout <<NOD (a,b);     
cout << endl; 
cout <<NOK (a,b);     
cout << endl; 
getch();
}
int NOD (int a, int b) 
{ 
while  (a!= b)
{
if (a>b)
a=a-b;
else 
b=b-a;
}
return a;
}
int NOK (int a, int b)
{
return (a*b)/NOD(a,b);
 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2013, 01:01
Ответы с готовыми решениями:

Найти наименьшее общее кратное трех чисел
заданы 3 числа найти их наименьшее общее кратное Теги выделения кода...

Найти наименьшее общее кратное заданных N чисел
Ребят, привет. Выручайте, чем можете, нужно составить код для нахождения...

Найти наименьшее общее кратное (НОК) натуральных чисел С++
Вот мой исходник : #include &lt;iostream.h&gt; int NSD (int a, int b) { while...

Вычислить наименьшее общее кратное двух натуральных чисел
Написать программу, вычисляющую наименьшее общее кратное двух натуральных чисел...

Найти наименьшее общее кратное (НОК) n натуральных чисел
Есть задача: НОК Найти наименьшее общее кратное (НОК) n натуральных...

5
Байт
Эксперт C
19209 / 12334 / 2604
Регистрация: 24.12.2010
Сообщений: 25,359
14.03.2013, 01:16 2
Цитата Сообщение от Denis_Spitsyn Посмотреть сообщение
Теперь, как я понимаю, необходимо найти НОК(НОК(а,в),с)).
Правильно понимаешь. Если необходимо - надо искать.
И про теги кодов не забывать.
0
Denis_Spitsyn
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 31
14.03.2013, 02:03  [ТС] 3
Делаю всё по аналогии, но НОК = 0, причем НОД программа считает правильно, а вот с НОК не сложилось почему-то.

Добавлено через 28 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int NOD1 (int a, int b,int c,int m) 
 { 
 m=NOK(a,b);
 while (m!= c)
 {
 if (m>c)
 m=m-c;
 else 
 c=c-m;
 }
 return m;
 }
int NOK1 (int a, int b,int m,int c)
{
return (m*c)/NOD1(a,b,c,m);
}
0
GoldenId
131 / 130 / 64
Регистрация: 11.11.2010
Сообщений: 771
Записей в блоге: 14
Завершенные тесты: 1
14.03.2013, 03:00 4
Smth like this
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
#include <iostream>
using namespace std;
 
int gcd( int x, int y );    // НОД
int lcm( int x, int y );    // НОК
 
int gcd( int x, int y, int z ); // НОД
int lcm( int x, int y, int z ); // НОК
 
void main()
{
    setlocale( LC_ALL, "rus" );
    int a, b, c;
 
    cout << "Введите число a: "; cin >> a;
    cout << "Введите число b: "; cin >> b;
    cout << "Введите число c: "; cin >> c;
 
    if( a == 0 || b == 0 || c == 0 )
    {
        cout << "Одно из введенных чисел равно нулю";
        cin.get();
        return;
    }
 
    cout << "НОК( a, b, c ): " << gcd( a, b, c ) << endl;
    cout << "НОД( a, b, c ): " << lcm( a, b, c ) << endl;
    cin.get();
}
 
int gcd( int x, int y )
{
    return x ? gcd( y % x, x ) : y; // алгоритм Евклида
}
 
int lcm( int x, int y )
{
    return abs( x * y ) / gcd( x, y );  // магическое соотношение НОД и НОК
}
 
int gcd( int x, int y, int z )
{
    return gcd( gcd( x, y ), z );
}
 
int lcm( int x, int y, int z )
{
    return lcm( lcm( x, y ), z );
}
0
Denis_Spitsyn
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 31
14.03.2013, 20:19  [ТС] 5
Цитата Сообщение от GoldenId Посмотреть сообщение
C++
1
2
    cout << "НОК( a, b, c ): " << gcd( a, b, c ) << endl;
    cout << "НОД( a, b, c ): " << lcm( a, b, c ) << endl;
Местами функции поменять нужно.
Мне интересно почему не работает мой код, объясните пожалуйста.
Вот код целиком
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
61
62
63
64
65
66
67
68
69
 #include <iostream>
 #include <conio.h>
 
 using namespace std;
 
 int NOD (int a, int b); 
 int NOK (int a, int b);
 int NOD1 (int a, int b,int c,int m); 
 int NOK1 (int a, int b,int c,int m);
 
void main ()
 
{
          int a,b,c,m;
 
          cout<<"Enter a: ";
          cin>>a;
 
          cout<<"Enter b: ";
          cin>>b;
 
          cout<<"Enter c: ";
          cin>>c;
 
          cout <<NOD (a,b); 
          cout << endl; 
 
          cout <<NOK (a,b); 
          cout << endl; 
 
          cout <<NOD1 (a,b,c,m); 
          cout << endl;
 
          cout <<NOK1(a,b,c,m); 
          cout << endl;
 
         getch();
 }
 int NOD (int a, int b) 
 { 
         while (a!= b)
         {
           if (a>b)
           a=a-b;
           else 
           b=b-a;
         }
         return a;
 }
 int NOK (int a, int b)
 {
         return (a*b)/NOD(a,b);
 }
 int NOD1 (int a, int b,int c,int m) 
 { 
         m=NOK(a,b);
         while (m!= c)
        {
           if (m>c)
           m=m-c;
           else 
           c=c-m;
        }
        return m;
 }
i nt NOK1 (int a, int b,int m,int c)
{
        return (m*c)/NOD1(a,b,c,m);
}
0
GoldenId
131 / 130 / 64
Регистрация: 11.11.2010
Сообщений: 771
Записей в блоге: 14
Завершенные тесты: 1
16.03.2013, 16:45 6
В алгоримт не вдавался, но
Цитата Сообщение от Denis_Spitsyn Посмотреть сообщение
i nt NOK1 (int a, int b,int m,int c)
Кроме того переменная m в функции main у Вас не инициалиризуется.
0
16.03.2013, 16:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2013, 16:45

Определить наименьшее общее кратное двух натуральных чисел
вот мой код. выдаёт одну ошибку. помогите пожалуйста найти. ...

Найти НОК (наименьшее общее кратное) массива натуральных чисел
Найти НОК (наименьшее общее кратное) массива натуральных чисел. Спасибо за...

Найти НОК (наименьшее общее кратное) двух введённых чисел
Найти НОК (наименьшее общее кратное) двух введённых чисел. Спасибо за помощь


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

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

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