Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

Дано N натуральных чисел. Найти их наибольший делитель,
используя алгоритм Евклида и учитывая, что НОД(a,b,c)= НОД(НОД(a,b),c).
Определить функцию расчета НОД для двух натуральных чисел, а затем с ее
помощью найти НОД для всех N-чисел .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2017, 10:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти наибольший делитель, используя алгоритм Евклида (C++):

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

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

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

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

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

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

8
Fixer_84
728 / 539 / 274
Регистрация: 30.04.2016
Сообщений: 1,555
05.06.2017, 10:58 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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;
}
1
VladislavQQQQ
0 / 0 / 0
Регистрация: 17.01.2017
Сообщений: 20
05.06.2017, 12:49  [ТС] #3
Fixer_84, а можете еще помочь ?)
0
Fixer_84
728 / 539 / 274
Регистрация: 30.04.2016
Сообщений: 1,555
05.06.2017, 12:52 #4
VladislavQQQQ, смотря что нужно сделать. Я не дома и работаю с планшета, поэтому круг моих возможностей ограничен до вечера.
1
MrGluck
05.06.2017, 14:07
  #5
 Комментарий модератора 
VladislavQQQQ, один вопрос - одна тема
0
Fixer_84
728 / 539 / 274
Регистрация: 30.04.2016
Сообщений: 1,555
05.06.2017, 15:18 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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)
1
VladislavQQQQ
0 / 0 / 0
Регистрация: 17.01.2017
Сообщений: 20
05.06.2017, 16:38  [ТС] #7
Fixer_84, спасибо большое , извините за наглость , но можете помочь с последней задачей , пожалуйста )

В файле записана последовательность из N трехзначных целых
чисел. Найти в каждом числе последовательности сумму, произведение и
среднеарифметическое цифр (определение суммы, произведения и
среднеарифметического цифр числа оформить одной функцией
0
Fixer_84
728 / 539 / 274
Регистрация: 30.04.2016
Сообщений: 1,555
05.06.2017, 19:32 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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;
}
1
VladislavQQQQ
0 / 0 / 0
Регистрация: 17.01.2017
Сообщений: 20
05.06.2017, 21:10  [ТС] #9
Fixer_84, Спасибо )
0
05.06.2017, 21:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2017, 21:10
Привет! Вот еще темы с ответами:

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

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

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

Наибольший общий делитель НОД по алгоритму Евклида - C++
Написать программу вычисления наибольшего общего делителя НОД по алгоритму Евклида: если a&gt; b, то Evk (b, остаток от деления a на b) и так...


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

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

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