Дан массив целых чисел. Есть ли среди них общий делитель?

Пример 1:

Дан массив целых чисел. Есть ли среди них общий делитель? Есть ли среди них общее кратное?

Решение от преподавателя:

#include

using namespace std;

int Nod(int a, int b)
{
while (a && b)
if (a >= b)
a %= b;
else
b %= a;
return a | b;
}
class mas
{
int *a;
int n;
public:
mas(int *b , int n)
{
int *a = new int [n];
a = b;
this->n = n;
}
~mas()
{
delete [] a;
}

int del()
{
int i;
int flag;
int NOD = a[0];
for (i = 1; iif (NOD >a[i]) // Если предполгаемый НОД больше след. элемент массива,
{
NOD = a[i];
}
flag = 1; // Флаг на true
while (flag == 1) // Пока флаг = true делаем.
{
flag = 0; // Флаг = false.
for (i = 0; iif (a[i] % NOD != 0) // Если след. элемент массива делится на предпологаемый НОД без остатка,
{
flag = 1;
} // тогда ставим флаг на true.
NOD--; // Здесь уменьшаем значение НОД.
}
NOD++; // Здесь увеличиваем значение НОД.
return NOD;
}

int nok(){
int i, nok = 1, j;
for (i = 0; i < n; i++)
{
j = a[i];
if (j < nok)
j = nok;
for (; j <= nok*a[i]; j++)
{
if (j%a[i] == 0 && j%nok == 0)
{
nok = j;
break;
}
}
}
return nok;
}
};

void main()
{
setlocale(LC_ALL, "rus");
int n;
cout << "Введите размер массива ";
cin >> n;
int *m = new int [n];
for (int i = 0; i < n; ++i)
cin >> m[i];
mas a(m,n);
cout << a.nok() << endl;
cout << a.del() << endl;
system("pause");
}

Не нашли нужного вам решения? Оставьте заявку и наши авторы быстро и качественно помогут вам с решением.
Оставить заявку
Работа вам нужна срочно. Не волнуйтесь, уложимся!

Заполните, пожалуйста, данные для автора:

  • 22423 авторов готовы помочь тебе.
  • 2402 онлайн