Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
VladislavQQQQ
0 / 0 / 0
Регистрация: 17.01.2017
Сообщений: 20
#1

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

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

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

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

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

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

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

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

8
Fixer_84
825 / 635 / 645
Регистрация: 30.04.2016
Сообщений: 2,108
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
VladislavQQQQ
0 / 0 / 0
Регистрация: 17.01.2017
Сообщений: 20
05.06.2017, 12:49  [ТС] #3
Fixer_84, а можете еще помочь ?)
0
Fixer_84
825 / 635 / 645
Регистрация: 30.04.2016
Сообщений: 2,108
05.06.2017, 12:52 #4
VladislavQQQQ, смотря что нужно сделать. Я не дома и работаю с планшета, поэтому круг моих возможностей ограничен до вечера.
2
MrGluck
05.06.2017, 14:07
  #5
 Комментарий модератора 
VladislavQQQQ, один вопрос - одна тема
0
Fixer_84
825 / 635 / 645
Регистрация: 30.04.2016
Сообщений: 2,108
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
VladislavQQQQ
0 / 0 / 0
Регистрация: 17.01.2017
Сообщений: 20
05.06.2017, 16:38  [ТС] #7
Fixer_84, спасибо большое , извините за наглость , но можете помочь с последней задачей , пожалуйста )

В файле записана последовательность из N трехзначных целых
чисел. Найти в каждом числе последовательности сумму, произведение и
среднеарифметическое цифр (определение суммы, произведения и
среднеарифметического цифр числа оформить одной функцией
0
Fixer_84
825 / 635 / 645
Регистрация: 30.04.2016
Сообщений: 2,108
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
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, используя алгоритм Евклида
Описать функцию NOD2(A, B) целого типа, находящую наибольший общий делитель...

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

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

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


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

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

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