Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/64: Рейтинг темы: голосов - 64, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 7
1

Найти наименьшее общее кратное всех элементов массива

13.06.2017, 10:46. Показов 12822. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан массив из 10 элементов. Необходимо написать программу, которая вычисляет наименьшее общее кратное всех элементов массива.
Помогите плиз. Никак не могу сообразить
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2017, 10:46
Ответы с готовыми решениями:

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

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

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

Найти наименьшее общее кратное используя рекурсию
Дан массив.Найти наименьшее общее кратное используя рекурсию

9
MrGluck
13.06.2017, 10:51
  #2
 Комментарий модератора 
Евгений997,
Запрещено размещать тему в нескольких подразделах одного раздела одновременно (кросспостинг), а также дублировать тему в одном разделе.
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
13.06.2017, 14:09 3
Евгений997, здравствуйте! Вот код запрошенной программы:

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
#include <iostream>
 
using namespace std;
 
int GCD(int a, int b)
{
    while (a - b != 0)
    {
        if (a > b)
            a -= b;
        else
            b -= a;
    }
    return a;
}
 
int main()
{
    const int N = 10;
    int A[N], M;
    cout << "Введите элементы массива:" << endl;
    for (int i = 0; i < N; i++)
    {
        cin >> A[i];
    }
    M = A[0];
    for (int i = 1; i < N; i++)
    {
        M = (M * A[i]) / GCD(M, A[i]);
    }
    cout << "НОК = " << M << endl;
    cin.get();
    return 0;
}
0
Диссидент
Эксперт C
27709 / 17325 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
13.06.2017, 15:41 4
Базируется на том, что НОК(А,В) = (А*В) / НОД(А,В)
Для нахождения НОД уважаемый Fixer_84 использовал алгоритм Евклида. Что вполне допустимо. Но эффективнее все-таки модифицированный, основанный на остатках от целочисленного деления. (Операция "%")
1
839 / 642 / 323
Регистрация: 24.02.2017
Сообщений: 2,254
13.06.2017, 16:54 5
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
#include <iostream.h>
 
int main()
{
 int mas[10]={2,3,4,12,1,6,2,4,12,8};
 int NOK=0,i=0,flag=0;
       for(i=0;i<10;i++)
       if(NOK<mas[i])
        NOK=mas[i];
        i=0;
       for(;;)
        {
         flag=0;
         i++;
          NOK=NOK*i;
          for(int j=0;j<10;j++)
           if(NOK%mas[j]!=0)
             flag=1;
           if(flag==0)break;
 
          }
 
        cout<<NOK;
 
    system(" pause >0");
 
    return 0;
}
0
Диссидент
Эксперт C
27709 / 17325 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
13.06.2017, 19:08 6
повар1, Любопытный подход. Практически полный перебор всех возможных значений. Интересно, сколько времени эта штука будет работать на таком наборе
2, 3, 4, 5, 6, 7, 37, 41, 43, 47
0
839 / 642 / 323
Регистрация: 24.02.2017
Сообщений: 2,254
13.06.2017, 22:53 7
Байт, подход верный, но с маленьким уточнением
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
#include <iostream.h>
 
int main()
{
 int mas[10]={2, 3, 4, 5, 6, 7, 37, 41, 43, 47};
 int NOK=0,i=0,flag=0,temp=0;
       for(i=0;i<10;i++)
       if(temp<mas[i])
        temp=mas[i];
        i=0;
       for(;;)
        {
         flag=0;
         i++;
          NOK=temp*i;
          for(int j=0;j<10;j++)
           if(NOK%mas[j]!=0)
             flag=1;
           if(flag==0)break;
 
          }
 
        cout<<NOK;
 
    system(" pause >0");
 
    return 0;
}
затраченное время где-то 3 сек.
0
Диссидент
Эксперт C
27709 / 17325 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
13.06.2017, 23:40 8
Цитата Сообщение от повар1 Посмотреть сообщение
подход верный
Ну чтож, если вы так считаете...
Цитата Сообщение от повар1 Посмотреть сообщение
где-то 3 сек.
Жуть!

Добавлено через 1 минуту
Для этой задачи счет должен идти на микросекунды.
0
839 / 642 / 323
Регистрация: 24.02.2017
Сообщений: 2,254
13.06.2017, 23:54 9
Байт, хотелось бы посмотреть на Ваш вариант решения этого вопроса, но с одним условием: у Вас только начальные знания в программирование на С++. А этот алгаритм называется "метод перебора". Придумал его не я, а только показал как это можно сделать.
0
Диссидент
Эксперт C
27709 / 17325 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
14.06.2017, 00:18 10
Цитата Сообщение от повар1 Посмотреть сообщение
хотелось бы посмотреть на Ваш вариант решения этого вопроса,
Этого, к счастью, уже не требуется, так как нормальное решение уже было предложено уважаемым Fixer_84 в посте №3. Я бы несколько оптимизировал в нем нахождение НОД (см. мой пост №4), но на эту тему на форуме имеется вполне достаточное количество публикаций.
Цитата Сообщение от повар1 Посмотреть сообщение
А этот алгОритм называется "метод перебора".
Да, я в курсах. Если вам хочется для решения простой арифметической задачки, решающейся за 0.001 сек, применить метод, который решает ее за 3 сек - ваше право.
Такие методы еще носят общее название БрутФорс (грубая сила). И все усилия программистов и математиков предыдущего и текущего столетий были направлены на то, чтобы сделать эти методы понежнее.

Добавлено через 4 минуты
Цитата Сообщение от повар1 Посмотреть сообщение
но с одним условием: у Вас только начальные знания в программирование на С++
В самом деле это условие выполнить очень несложно. Ибо именно таковыми знаниями я и обладаю (не считая кой-каких заморочек, которые к делу не относятся). Тут дело не в знании языков. А в алгоритмах. В соображалке, короче.
0
14.06.2017, 00:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2017, 00:18
Помогаю со студенческими работами здесь

Наименьшее общее кратное для массива(с использованием вложенных циклов)
помогите пожалуйста написать программу. Задан целочисленный массив A. Определить наименьшее общее...

Найти наибольший общий делитель и наименьшее общее кратное
Вообщем нужно найти Наибольший общий делитель и наименьшее общее кратное. При запуске пишет &quot;...

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru