Ctrl K

Куски с общим делителем

Средняя
Дан массив целых чисел values, каждое не меньше 2. Его нужно разрезать на непрерывные куски так, чтобы каждый элемент попал ровно в один кусок, а у всех чисел внутри одного куска был общий делитель больше 1 (то есть НОД куска больше 1). Верните наименьшее возможное число кусков.
Пример 1
values=[10, 15, 25, 9, 21, 4] → 3

Подходит разбиение [10, 15, 25] | [9, 21] | [4]: НОД кусков — 5, 3 и 4. Двух кусков не хватит: у 25 и 9 нет общего делителя, а у 21 и 4 — тоже.

Пример 2
values=[6, 12, 18] → 1

Все числа делятся на 6, так что весь массив — один кусок.

Пример 3
values=[7, 11] → 2
Ограничения
  • 1 ≤ len(values) ≤ 10⁵
  • 2 ≤ values[i] ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРазрез по общим краям СредняяСтесать простыми до возрастания СредняяРавные суммы окон на кольце СредняяСжать список остатками СредняяДелить, пока не станет по порядку Средняя
загружаем Python…
Вход
values=[10, 15, 25, 9, 21, 4]
Ожидается
3

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 157 тестов на сервере, включая скрытые.