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

Наименьшее общее кратное - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 144, средняя оценка - 4.70
AgentumA
2 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 75
11.05.2010, 18:45     Наименьшее общее кратное #1
Не особо понятная мне задача попалась...поясните и помогите:
используя функцию нахождения наименьшего общего кратного двух чисел,найти наименьшее общее кратное четырех чисел.
то есть мне надо написать функцию для двух чисел и применить для четырех???или же есть стандартная функция для НОК двух чисел???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SeryZone
 Аватар для SeryZone
56 / 28 / 5
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
03.04.2012, 20:55     Наименьшее общее кратное #21
Но как сделать, чтобы перебор заработал?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
03.04.2012, 21:08     Наименьшее общее кратное #22
Цитата Сообщение от SeryZone Посмотреть сообщение
Но как сделать, чтобы перебор заработал?
работает же.
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
#include <iostream>
long long NOK (long long x, long long y) 
{
 long long max=(x>y) ? x : y;
 long long min=(x<=y) ? y : x;
 for (int i=1;;i++)
  if ((i*max)%min==0) return i*max;
}    
int main()
{
 int n=0,j;
 int a[20];
 while (n<=1 || n>=21)
  {
   std::cout<<"How many numbers? ";
   std::cin >> n;
  }
 for (j=0;j<n;j++) 
  {
   std::cout<<"a["<<j<<"]=";
   std::cin >> a[j];
  }
 long long o=NOK(a[0],a[1]);
 for (j=2;j<n;j++) o=NOK(o,a[j]);
 std::cout <<"\nNOK="<< o << std::endl;
 system("pause");
 return 0;
 
}
SeryZone
 Аватар для SeryZone
56 / 28 / 5
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
03.04.2012, 21:38     Наименьшее общее кратное #23
только оно выдаёт не НОК, а максимальное число. Что-то не так...

Добавлено через 9 минут
Вот, это - лучшее. Но иногда выдаёт неверные ответы!
C++ (Qt)
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
#include <iostream>
 
long NOK(int, int);
 
int main()
{
    short n,j;
    short a[20];
    std::cin >> n;
    if (n>1 && n<21)
    {
        for (j=0;j<n;j++) std::cin >> a[j];
        long o=NOK(a[0],a[1]);
        for (j=2;j<n;j++) o=NOK(o,a[j]);
        std::cout << o << std::endl;
    }
}
 
long NOK (int x, int y) 
{
    int k,l,m;
    k=x; l=y;
    while (l!=0)
    {
        m=k%l;
        k=l; l=m;
    }
    return x*y/k;
}
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
04.04.2012, 00:34     Наименьшее общее кратное #24
Цитата Сообщение от SeryZone Посмотреть сообщение
только оно выдаёт не НОК, а максимальное число. Что-то не так...
Копировал условия с "?", непривычный вид ифа для меня, наверное там косяки вышли в моём коде. Вот так работает, проверил только что
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
#include <iostream>
int NOK (int x, int y) 
{
 int maximum,minimum;
 if (x>y) { maximum=x; minimum=y; }
 else { minimum=x; maximum=y; }
 for (int i=1;i<=minimum;i++)
  if ((i*maximum)%minimum==0) return (i*maximum);
}    
int main()
{
 int n=0,j;
 int a[20];
 while (n<=1 || n>=21)
  {
   std::cout<<"How many numbers? ";
   std::cin >> n;
  }
 for (j=0;j<n;j++) 
  {
   std::cout<<"a["<<j<<"]=";
   std::cin >> a[j];
  }
 int o=NOK(a[0],a[1]);
 for (j=2;j<n;j++) o=NOK(o,a[j]);
 std::cout <<"\nNOK="<< o << std::endl;
 system("pause");
 return 0;
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2016, 10:30     Наименьшее общее кратное
Еще ссылки по теме:

Найти наименьшее общее кратное используя рекурсию C++
C++ Найти наибольший общий делитель и наименьшее общее кратное
Вычислить наименьшее общее кратное двух натуральных чисел C++

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

Или воспользуйтесь поиском по форуму:
Ferrari F1
Заблокирован
416 / 290 / 63
Регистрация: 27.01.2015
Сообщений: 1,935
Записей в блоге: 1
Завершенные тесты: 1
29.04.2016, 10:30     Наименьшее общее кратное #25
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
 
#include <algorithm>
using std::swap;
 
unsigned long long gcd(unsigned long long a, unsigned long long b)
{
    while (a % b)
        swap(a %= b, b);
    return b;
}
 
int main(void)
{
    unsigned long long a, b;
    cin >> a >> b;
    cout << a * b / gcd(a, b) << endl;
    return 0;
}
Yandex
Объявления
29.04.2016, 10:30     Наименьшее общее кратное
Ответ Создать тему
Опции темы

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