Одно из возможных улучшений кода может быть следующим:
Проверку условия if (in_array($_POST['factor'], array(1, 2, 3, 4, 5))) можно упростить с помощью конструкции switch.
Использование цикла for не обязательно, так как блок кода, который нужно выполнить, не зависит от переменной $i. Вместо цикла можно использовать конструкцию if...else.
Можно улучшить читабельность кода, разбив его на несколько функций с понятными именами.
Вот как это может выглядеть:
Или же: