0 / 0 / 0
Регистрация: 17.01.2017
Сообщений: 20
1

Найти наибольший делитель, используя алгоритм Евклида

05.06.2017, 10:30. Показов 3528. Ответов 8
Метки нет (Все метки)

Дано N натуральных чисел. Найти их наибольший делитель,
используя алгоритм Евклида и учитывая, что НОД(a,b,c)= НОД(НОД(a,b),c).
Определить функцию расчета НОД для двух натуральных чисел, а затем с ее
помощью найти НОД для всех N-чисел .
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2017, 10:30
Ответы с готовыми решениями:

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

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

Найти наибольший общий делитель двух введенных чисел, используя алгоритм Евклида
Тема: Функции2. 6. Найти наибольший общий делитель (ндс) двух введенных чисел, используя алгоритм...

Найти наибольший общий делитель n и m (наименьшее общее кратное n и m) используя алгоритм Евклида.
10.Даны натуральные числа n,m. Найти наибольший общий делитель n и m (наименьшее общее кратное n и...

8
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
05.06.2017, 10:58 2
Лучший ответ Сообщение было отмечено VladislavQQQQ как решение

Решение

VladislavQQQQ, здравствуйте! Вот запрошенная вами программа:

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
#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()
{
 
    int N, M;
    cout << "Введите количество чисел:" << endl;
    cout << "N = ";
    cin >> N;
    int* A = new int[N];
    cout << "Введите числа:" << endl;
    for (int i = 0; i < N; i++)
    {
        cout << "Число #" << i + 1 << ":";
        cin >> A[i];
    }
    M = A[0];
    for (int i = 1; i < N; i++)
    {
        M = GCD(M, A[i]);
    }
    cout << "НОД данных чисел: " << M << endl;
    delete [] A;
    cin.get();
    return 0;
}
2
0 / 0 / 0
Регистрация: 17.01.2017
Сообщений: 20
05.06.2017, 12:49  [ТС] 3
Fixer_84, а можете еще помочь ?)
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
05.06.2017, 12:52 4
VladislavQQQQ, смотря что нужно сделать. Я не дома и работаю с планшета, поэтому круг моих возможностей ограничен до вечера.
2
MrGluck
05.06.2017, 14:07
  #5
 Комментарий модератора 
VladislavQQQQ, один вопрос - одна тема
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
05.06.2017, 15:18 6
Лучший ответ Сообщение было отмечено VladislavQQQQ как решение

Решение

VladislavQQQQ, вот программа, но я ее не тестировал.

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
#include <iostream>
#include <fstream>
 
using namespace std;
 
int F(int N)
{
    int k = 0;
    while (N > 0)
    {
        N /= 10;
        k++;
    }
    return k;
}
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    int N, k, a, b, c;
    k = a = b = c = 0;
    while (fin >> N)
    {
        k++;
        if (F(N) == 1)
            a++;
        if (F(N) == 2)
            b++;
        if (F(N) == 3)
            c++;
    }
    fout << "Общее количество: " << k << endl;
    fout << "Количество однозначных: " << a << endl;
    fout << "Количество двухзначных: " << b << endl;
    fout << "Количество трехзначных: " << c << endl;
    fin.close();
    fout.close();
    cin.get();
    return 0;
}
Добавлено через 32 минуты
VladislavQQQQ, совсем забыл про ноль. Замените, пожалуйста, 26 строчку на эту:


C++
1
if (F(N) == 1 || N == 0)
2
0 / 0 / 0
Регистрация: 17.01.2017
Сообщений: 20
05.06.2017, 16:38  [ТС] 7
Fixer_84, спасибо большое , извините за наглость , но можете помочь с последней задачей , пожалуйста )

В файле записана последовательность из N трехзначных целых
чисел. Найти в каждом числе последовательности сумму, произведение и
среднеарифметическое цифр (определение суммы, произведения и
среднеарифметического цифр числа оформить одной функцией
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
05.06.2017, 19:32 8
Лучший ответ Сообщение было отмечено VladislavQQQQ как решение

Решение

VladislavQQQQ, да, все в порядке. Вот код для задания выше:

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
#include <iostream>
#include <tuple>
#include <fstream>
 
using namespace std;
 
tuple<int, int, double> F(int N)
{
    int sum, p;
    sum = 0;
    p = 1;
    while (N > 0)
    {
        p *= N % 10;
        sum += N % 10;
        N /= 10;
    }
    return make_tuple(sum, p, (double)sum / 3);
}
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    int N, sum, p;
    double average;
    fout.precision(2);
    while (fin >> N)
    {
        tie(sum, p, average) = F(N);
        fout << N << ": ";
        fout << sum << " " << p << " " << fixed << average << endl;
    }
    fin.close();
    fout.close();
    system("pause");
    return 0;
}
2
0 / 0 / 0
Регистрация: 17.01.2017
Сообщений: 20
05.06.2017, 21:10  [ТС] 9
Fixer_84, Спасибо )
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2017, 21:10
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru