Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Большие числа (https://javascript.ru/forum/misc/70752-bolshie-chisla.html)

Alexandroppolus 30.09.2017 13:01

Цитата:

Сообщение от Gtfuc (Сообщение 466056)
Каким образом можно оптимизировать производительность вычисления? Если увеличить количество слагаемых в выражении?('45!*63!*28!*55!!*35!!*45!!*25 !!*65!!*50!!*40!!*95!!*25!*45!*63!*28!*55!!'). До какого максимального предела строки можно вычислять, зависит от аппаратной мощности или как?

Вычислять можно строки с большим количеством больших чисел.

Вот функции
function getFactNums(x, n){
  var z = 0;
  while(x){
    x = (x/n)|0;
    z+=x;
  }
  return z;
}

function getFF2(x) {
  return x % 2 ? 0 : getFactNums(x, 2);
}

function getFF5(x) {
  var c2 = getFactNums(Math.floor(x/2), 5);
  return x % 2 ? getFactNums(x, 5) - c2 : c2;
}

var count2 = 0, count5 = 0;

Далее для всех множителей вида N! или N!! получаешь количество в них двоек (для N! будет getFactNums(N, 2), для N!! - getFF2(N) ) и пятерок (соответственно getFactNums (N, 5) и getFF5(N) ), суммируешь в переменные count2 и count5.
Результат равен Math.min(count2, count5)

Gtfuc 30.09.2017 13:10

Alexandroppolus,
Спасибо.


Часовой пояс GMT +3, время: 23:16.