Олимпиадный тренинг

Задача . A. Увеличить НОД


Задача

Темы: теория чисел *1800

У Mr. F есть \(n\) положительных целых чисел, \(a_1, a_2, \ldots, a_n\).

Он считает, что наибольший общий делитель этих чисел слишком маленький, и хочет увеличить его, удалив некоторые из чисел.

Но эта задача показалась ему слишком простой, поэтому он не хочет решать ее сам. Если вы ему поможете, он даст вам несколько баллов в качестве вознаграждения.

Ваша задача найти минимальное количество чисел, удалив которые, наибольший делитель оставшихся будет строго больше чем наибольший общий делитель всех исходных чисел.

Входные данные

В первой строке входного файла записано единственное целое число \(n\) (\(2 \leq n \leq 3 \cdot 10^5\)) — количество чисел у Mr. F.

Во второй строке записаны \(n\) целых чисел, \(a_1, a_2, \ldots, a_n\) (\(1 \leq a_i \leq 1.5 \cdot 10^7\)).

Выходные данные

Выведите одно целое положительное число — минимальное количество чисел, удалив которые, наибольший делитель оставшихся будет строго больше чем наибольший общий делитель всех исходных чисел.

Вы не можете удалить все числа.

Если решения не существует, выведите «-1» (без кавычек).

Примечание

В первом примере, НОД изначально \(1\). Вы можете удалить \(1\), НОД увеличится, и станет равным \(2\). Таким образом, ответ \(1\).

Во втором примере, НОД изначально \(3\). Вы можете удалить два числа, \(6\) и \(9\), НОД увеличится, и станет равным \(15\). Можно показать, что удалив одно число, увеличить НОД невозможно. Таким образом, ответ \(2\).

В третьем примере, невозможно удалить числа, чтобы НОД увеличился. Таким образом, ответ \(-1\).


Примеры
Входные данныеВыходные данные
1 3
1 2 4
1
2 4
6 9 15 30
2
3 3
1 1 1
-1

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя