Как наиболее быстро найти частоту встречаемости делителей у последовательности чисел (кроме делителя 1)? Например, для чисел 4,7,10,12 результатом должно быть 2 - 3, 3 - 1, 4 - 2, 5 - 1, 6 - 1, 7 - 1, 10 - 1, 12 - 1. Находить делители каждого числа, а потом подсчитывать сколько раз они встречаются, - слишком медленно (судя по профайлу).
Альтернативная идея: На каждой итерации сначала находить только простые делители каждого числа (которых будет сильно меньше, чем вообще делителей). Затем делить число на произведение найденных простых делителей. Затем снова искать какие из простых чисел найденных на предыдущем этапе являются делителями оставшегося числа. Повторять пока число не сойдет на нет. Таким образом у нас будет пачка массивов с простыми делителями, причем в каждом следующем массиве некоторые могут повторяться. На основе этих массивов попарным перемножением генерируем все делители.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости