Как найти элементы массива, что лежат на промежутке
Написать программу, которая будет искать общие делители на промежутке. Программа должна получить от пользователя два массива размерности от 1 до 10. Предусмотреть возможность заполнения из консоли вручную или автозаполнение массивов значениями от 1 до 100.
Найти все элементы, лежащие на промежутке между последним элементом первого массива и первым элементом второго массива (включая эти элементы) и которые одновременно делятся на все элементы первого массива и делителями всех элементов второго массива. Результатом работы должен быть вывод найденных элементов
#include<iostream>
using namespace std;
int gcd(int a, int b) {
return (a == 0) ? b: gcd(b % a, a);
}
int main(){
float product = 1, a, b;
int sizeA, sizeB;
cout << "vvedit rozmir 1 mas: ";
cin >> sizeA;
cout << "vvedit rozmir 2 mas: ";
cin >> sizeB;
int *arrA = new int[sizeA];
int *arrB = new int[sizeB];
cout << "\n\n 1 mas: ";
for (int x = 0; x < sizeA; x++)
{
arrA[x] = rand() % 99 + 1;
cout << arrA[x] << " ";
if (arrA[x] > b || arrA[x] < a) {
product *= arrA[x];
}
}
cout << "\n\n 2 mas: ";
for (int x = 0; x < sizeB; x++)
{
arrB[x] = rand() % 99 + 1;
cout << arrB[x] << " ";
if (arrB[x] > b || arrB[x] < a) {
product *= arrB[x];
}
}
}
написала сам массив, выводит правильно, но не выходит написать часть кода, где требуется найти все элементы, лежащие на промежутке между последним элементом первого массива и первым элементом второго массива (включая эти элементы) и которые одновременно делятся на все элементы первого массива и делителями всех элементов второго массива. [1]: https://i.stack.imgur.com/cCcMm.jpg
Ответы (1 шт):
Как-то вот это Найти все элементы, лежащие на промежутке между последним элементом первого массива и первым элементом второго массива (включая эти элементы) и которые одновременно делятся на все элементы первого массива и делителями всех элементов второго массива. мутно изложено.
Формально примерно такой код (писал не компилируя, если где описка - простите...)
for(int n = arrA[sizeA-1]; n <= arrB[sizeB-1]; ++n)
{
bool ok = true;
for(int i = 0; i < sizeA; ++i)
if (n%arrA[i]) { ok = false; break; }
if (!ok) continue;
for(int i = 0; i < sizeB; ++i)
if (arrB[i]%n) { ok = false; break; }
if (!ok) continue;
cout << n << "\n";
}
но что-то мне представляется крайне низкой вероятность найти такие значения (не элементы... что вообще такое "элементы" между двумя массивами?)