Если не хочется показывать алгоритм расчёта, то, конечно, только вариант 2. Даже если js-файл с алгоритмом как-то минифицировать, всё равно найдётся умелец, который его "дизассемблирует".
Во втором варианте я не совсем понял, что понимается по "оперативной памятью", но полагаю, что проще всего все необходимые для расчётов данные хранить в сессии на сервере (см. $_SESSION) - так меньше данных придётся передавать от клиента к серверу, а значит и скорость расчёта несколько увеличится. Если какие-то промежуточные данные необходимы клиенту, то можно сохранять их либо в куках, как подсказал автор выше, либо в LocalStorage в DOM, либо, если вы используете jQuery, то в дополнительных атрибутах тегов тех полей, которым эти данные нужны. Посмотрите в сторону функционала jQuery.data(). ;)