PHP

Программисты, сколько вам нужно времени чтобы написать такой алгоритм:

Чтобы он определял максимальное возможное кол-во вариантов разложения любого числа на множители. Я вот уже 2 часа пишу, никак не напишу, вы бы за сколько справились? Может вам известны какие нибудь законы, от которых зависит их кол-во? Пока что могу определить только максимальное кол-во самих множителей для числа, а вот сам подсчет вариантов это жесть, у меня тут 80 строк кода епт, я уже запутался
Максимка
Максимка
4 589
Смотря что подразумевать под разложением числа на множители. Все возможные множители, или только простые? Порядок перечисления множителей важен или нет? Множители могут быть одинаковыми, или должны быть все разные? Входит ли число 1 в список множителей?

function f($val, $cur = 2) {
if($val == 1){ return 1; }
if($val < $cur){ return 0; }
for($count=0; $cur <= $val; ++$cur) {
for($tmp = $val; $tmp % $cur == 0; $count += f(($tmp /= $cur), $cur+1));
}
return $count;
}

echo f(125);
Евгений Олюнин
Евгений Олюнин
96 511
Лучший ответ
Максимка Число 1 не входит. Множители тут это любые целые числа. Повторяться могут, но одинаковых вариантов быть не может. Порядок не важен
Максимально возможное разложение на множители? Это называется разложение на простые множители. За минутку.
Norov Oleg93
Norov Oleg93
53 358
Максимка вычислить максимальное возможное кол-во вариантов разложения
Пенёк!!! Алгоритм или его блок-схему - в элементе.... А вот реализация в языке...
Роман Халин
Роман Халин
50 836
Максимка Какая разница какой язык применять. Алгоритм есть алгоритм. Можешь мне блок схему сделать я не против
Называется факторизация... задачка с одной стороны простая, с другой... хех. Самый простой тут, а так гугли "факторизация" Например, на JS http://www.se16.info/js/factor.htm Правая кнопка мыши, "Исходный код страницы" и всех делов!
что за язык?
Андрей Черных
Андрей Черных
9 149
int someDigit = 100;
mod = 2;
vector < int > vecDelim;
while (someDigit > 1) {
if (someDigit % mod) {
vecDelim.push_back(i);
someDigit = someDigit % mod;
mod = 2;
}
else {
mod++;
}
}

как-то так. Сонная, на скорую руку и не проверяла )) возможно есть где-то недочет, завтра проверю хД
а по теме, учи дискретную математику. Она поможет не сидеть над такими задачами по 2 часа с 80 строками кода. На полном серьезе потрать лучше пару месяцев на изучение мат. логики, английского и гугла и только потом приступай уже к программированию, иначе бросишь это дело.
Максимка Не согласен. В программировании есть направления где математика не нужна. Да что там есть, практически нигде не нужна. Я веб-разработчик джуниор. Ну и нафига мне знать что то там из высшей математики? Мне нужно знать технологии, фреймворки
Забей на эту херню.