до n=10^5, желательно побыстрее. Вопрос:
1) Правильно ли я понимаю, что лучше делать по типу решета эратосфена: идти по массиву чисел с простым шагом р и делить каждое по максимуму на это р?
2) Как лучше хранить найденные факторизации? Я собираюсь в виде массива длиной n из структур вида
struct prime_factors {
int primes[8];
int exp[8];
};
Это нормально? Или лучше как-то по другому?
Решето нужно не для факторизации
@proalgorithms кажется это сюда
Кажется да
template<size_t N, size_t I> struct is_prime : boost::mpl::if_c<(N%I == 0), boost::mpl::false_, is_prime<N, I - 1>>::type {}; template<size_t N> struct is_prime<N, 1> : boost::mpl::true_ {};
нужно хранить минимальный простой делитель для каждого из чисел...по ним возмжно будет восстановить общий ответ....время работы алгоритма O (n)
Обсуждают сегодня