Какие числа являются общими делителями всех элементов массива?

Как можно улучшить код для нахождения общих делителей всех элементов массива, а не делителей для каждого отдельного числа?
  • 13 июня 2024 г. 14:41
Ответы на вопрос 2
Для нахождения общих делителей всех элементов массива можно использовать следующий алгоритм:

1. Найти наименьший элемент в массиве.
2. Найти все делители этого числа.
3. Перебирать делители от 1 до наименьшего элемента.
4. Проверять, являются ли все элементы массива кратны текущему делителю.
5. Если да, добавить делитель в общий список делителей.

Пример кода на Python:

```python
from math import gcd

def common_divisors(arr):
    min_num = min(arr)
    divisors = []
    
    for i in range(1, min_num + 1):
        if all(num % i == 0 for num in arr):
            divisors.append(i)
    
    return divisors

arr = [12, 24, 36]
result = common_divisors(arr)
print(result)
```

Этот код находит общие делители всех элементов массива за более эффективное время, так как использует общие свойства чисел из массива.
<pre><code class="javascript">let arr = [10, 20, 30, 40, 55, 60, 70];

// Ищем минимальное число в массиве т.к. делитель не может быть больше него
let min = Math.min(...arr);

// Ищем общие делители
let commonDivisors = [];
for (let i = 1; i &lt;= min; i++) {
    if (arr.every(num =&gt; num % i === 0)) {
        commonDivisors.push(i);
    }
}

console.log(commonDivisors);</code></pre>
Похожие вопросы