bospur
@bospur
Frontend dev

Фибоначчи без использования BigInt на javascript?

Здравствуйте, учу Js и столкнулся с такой задачкой. Нужно написать функцию которая принимает целое натуральное число от 500 до 25000 и находит число Фибоначчи(далее фиб) по порядковому номеру и все бы ничего но версия Node 8.1.3 и BigInt числа он не принимает. Так же нужно что бы функция получив число фиб разбивала его на интервалы по 25 цифр и выводила последний (он может быть меньше 25) а так же подсчитывала количество каждой цифры от 0 до 9 в числе и выводила большее и его количество. код вышел вод такой:
function aroundFib(n) {
  let a = 1n;
  let b = 1n;
  for (let i = 3; i <= n; i++) {
    let c = a + b;
    a = b;
    b = c;
  }
  let str = ''
  let obj = {
    0: 0,
    1: 0,
    2: 0,
    3: 0,
    4: 0,
    5: 0,
    6: 0,
    7: 0,
    8: 0,
    9: 0,
    }
  for(let number of String(b)){
    str += number;
    obj[number]++;
    if(str.length > 25){
      str = number
    }
  }
  let max = 0
  let count = 0;
  for(let [key, value] of Object.entries(obj)){
    if(value > max){
      max = value;
      count = key;
    }
  }
return `Last chunk ${str}; Max is ${max} for digit ${count}`
}


это код работает , но как сделать работу без BigInt понять совсем не могу( Пожалуйста, подскажите
p.s. прошу прощения за такие названия переменных
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Без BigInt - никак. Числа-то большие получаются. Если нет библиотеки, придется самостоятельно писать длинную арифметику. Просто храните цифры числа в массиве и длину рядом. Вам надо будет только сложение реализовывать, ну это делается столбиком одним циклом. Храните перенос с младших разрядов в переменной. Можно или исходники BigInt поискать, или вот тут посмотреть
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы