Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/39: Рейтинг темы: голосов - 39, средняя оценка - 4.64
14 / 4 / 0
Регистрация: 25.10.2017
Сообщений: 8

Пары взаимно простых чисел

26.10.2017, 20:07. Показов 8318. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано число n(кол-во чисел) и числа а(интервал этих чисел)(1..n) (n<100). Вывести все пары взаимно простых чисел.
Функция для нахождения взаимно простых есть, но как найти и вывести все возможные пары (например, 10 произвольных чисел, введенных с клавиатуры), не доходит.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.10.2017, 20:07
Ответы с готовыми решениями:

Имеются ли в массиве пары взаимно обратных соседних чисел?
Дан одномерный массив x, x,..., x. Определить, имеется ли в нем пары взаимно обратных соседних чисел. Определить число таких соседств.

Найти количество чисел в интервале от 1 до N, взаимно простых с N
Дано число N. Найти количество чисел в интервале от 1 до N,взаимно простых с N.

Упорядочить массив по убыванию количества взаимно простых чисел
Создать случайный массив размера n. Упорядочить его по убыванию количества взаимно простых чисел среди элементов массива.

7
14 / 4 / 0
Регистрация: 25.10.2017
Сообщений: 8
26.10.2017, 22:48  [ТС]
Есть функция НОД и ввод чисел в массив:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int NOD (int a, int b)
{
    while (a>0 and b>0)
        if (a>b)
            a%=b;
        else
            b%=a;
    return a+b;
}
 
int main()
{
    int n;
    cout << "4islo elementov ";
    cin >> n;
    int arr [n];
        for(int i=0; i<n; i++)
            {
            cout << "vvedi "<<(i+1) << "element:";
            cin >> arr[i];
            }
}
Замкнуло на цикле, который перебирал бы и сравнивал числа, и выводил пары чисел у которых НОД==1.

Добавлено через 22 минуты
цикл примерно такой, но чего то не хватает, он выдает кучу других чисел

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for(int i=0;i<n;++i)
{
   for(int j=i+1;j<n;++j)
   {
       if (NOD(arr[i], arr[j]) == 1) 
        { 
               cout  << "[" << arr[i] << " " << arr[j] << "]"; 
               ++n; 
        }
      else
        cout << "no";
   }
}
Добавлено через 17 минут
Вроде довела до ума)
Спасибо, необходимость разложить по полочкам и объяснить третьему лицу, помогла разобраться самой)
2
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
27.10.2017, 00:16
Цитата Сообщение от irinapgl Посмотреть сообщение
Вроде довела до ума)
Спасибо, необходимость разложить по полочкам и объяснить третьему лицу, помогла разобраться самой)
Вы знаете, это просто замечательно! Я искренне рад за вас!
У меня бывали такие случаи в долгой программистской жизни, когда я просто был в растерянности. И поскольку нерешенная проблема просто лезла из головы бедной моей, я хватал за руку кого попало - жену, соседа-алкаша, случайного знакомого по собачьей площадке.... И эту проблему ему пытался втолковать. Глупо, правда? Но по мере втолкования она как бы сама собой решалась...
Имхо, это процесс нормальный и естественный. И наш форум иногда может поспособствовать...
Удачи вам! Будут еще проблемы - заходите!
1
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,863
27.10.2017, 07:29
Цитата Сообщение от irinapgl Посмотреть сообщение
помогла разобраться самой
Нужно тогда привести решение
Ибо в правилах сказано
Правила п 4.10
Если вопрос был решен вами самостоятельно, отпишите об этом в своей теме - есть и другие люди, которые столкнутся с той же проблемой, и им поможет ваш ответ.
0
14 / 4 / 0
Регистрация: 25.10.2017
Сообщений: 8
01.11.2017, 00:17  [ТС]
Итог такой:

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
42
43
44
45
46
47
48
49
50
51
#include <iostream>
using namespace std;
 
int NOD (int a, int b)
{
    while (a>0 and b>0)
        if (a>b)
            a%=b;
        else
            b%=a;
    if((a+b)==1)
        return true;
    else
        return false;
 
int main()
{
    int ok;
    do
    {
        int n;
        cout << "Skoljko 4isel budet?" << endl;
        cin >> n;
        if (n<0)
            cout << "Nepraviljnoe 4islo" << endl;
        int arr [n];
        for(int i=0; i<n; i++)
          {
           do
            {
            cout << "Vvedite "<<(i+1) << " naturaljnoe 4islo:" << endl;
            cin >> arr[i];
            }
           while (arr[i]<0); 
          }
 
for(int i=0;i<n;++i) 
{
   for(int j=i+1;j<n;++j)
   {
       if (NOD(arr[i], arr[j]) == true)
        {
            cout  << "[" << arr[i] << " " << arr[j] << "]" << endl;
        }
   }
}
    cout << "Prodolzitj (1), Zakon4itj (0)?" << endl;
    cin >> ok;
    }
    while (ok==1);
}
В идеале можно еще добавить функцию поиска и удаления одинаковых чисел массива.
2
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
01.11.2017, 00:28
irinapgl, работает? Ну и слава Богу! У меня бы на древнем сишном трансляторе arr[n] бы не заработала ...
Но логика - правильная.
Удачи вам!
Цитата Сообщение от irinapgl Посмотреть сообщение
В идеале можно еще добавить функцию поиска и удаления одинаковых чисел массива.
А это по задаче как-бы и ни к чему. Но если хочется - почему бы и нет?
0
14 / 4 / 0
Регистрация: 25.10.2017
Сообщений: 8
01.11.2017, 01:59  [ТС]
Спасибо, у меня работает)
0
2487 / 1151 / 709
Регистрация: 25.04.2016
Сообщений: 3,315
05.06.2018, 13:50
Цитата Сообщение от Байт Посмотреть сообщение
работает? Ну и слава Богу! У меня бы на древнем сишном трансляторе arr[n] бы не заработала ...
у меня бы и на супер-современном не заработала, поскольку NOD не закрыта.

рабочий вариант с парой изменений:
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
42
43
44
45
46
47
48
#include <iostream>
#include <cstdlib>
using namespace std;
// Пары взаимно простых чисел
bool NOD (int a, int b)
{
    while (a>0 && b>0)
        if (a>b) a %= b;
        else b %= a;
    return (a+b) == 1;
}
 
int main (void)
{
    int ok = 1, i, k, size;
    int * a = NULL;
    while (ok != 0)
    {
        do{                             // узнаем размер массива
            cout << "Skoljko 4isel?: ";
            cin >> size;
            if (size < 1) cout << "Nepraviljnoe 4islo" << endl;
            cout << endl;
        } while (size < 1);
 
        a = new int [size];             // создаем массив
 
        for (i=0; i<size; i++)          // заполняем массив значениями
        {
            cout << "a[" << (i+1) << "] = ";
            cin >> a[i];
            if (a[i] < 0) i--;
        }   cout << endl;
 
        for (i=0; i<size; i++)          // ищем ноды
        {
            for (k=i+1; k<size; k++)
                if (NOD(a[i], a[k]) == true)
                    cout  << "[" << a[i] << " " << a[k] << "]" << endl;
        }
 
        delete [] a;                    // удаляем массив
        cout << "\nProdolzitj (1), Zakon4itj (0)?: ";
        cin >> ok;
        if (ok != 0) cout << endl;
    }
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.06.2018, 13:50
Помогаю со студенческими работами здесь

Определить сколько в последовательности пар соседних взаимно простых чисел
Вводится последовательность из N целых положительных элементов. Определить сколько в последовательности пар соседних взаимно простых чисел....

Определить, сколько в последовательности пар соседних взаимно простых чисел
Вводится последовательность из N целых положительных элементов. Определить, сколько в последовательности пар соседних взаимно простых...

Циклы: определить, сколько в последовательности пар соседних взаимно простых чисел
Вводится последовательность из N целых положительных элементов. Определить, сколько в последовательности пар соседних взаимно простых...

Определить сколько в файле чисел, взаимно простых с суммой своих цифр
Создать файл из 100 целых чисел, лежащих на отрезке , используя генератор случайных чисел. -Вывести его на экран. -Сколько в нем...

Функция, определяющая, сколько в последовательности пар соседних взаимно простых чисел
Вводится последовательность из N целых положительных элементов. Определить сколько в последовательности пар соседних взаимно простых...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 31.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru