Как я могу оптимизировать этот код? Di git N Степень - PullRequest
0 голосов
/ 09 июля 2020

Источник проблемы https://www.freecodecamp.org/learn/coding-interview-prep/project-euler/problem-30-digit-n-powers

Мне любопытно, как я могу оптимизировать этот код. Цель кода - найти сумму всех чисел, цифры которых при возведении в степень n прибавляются к исходному числу.

    ```

    function digitnPowers(n) {
    let newArr = [];
    let total = 0;
    for (let i = 2; i <= Math.pow(9, n) * n; i++) {
      let product = 0;
      let thisVar = i.toString().split("");
      console.log(thisVar);
      for (let j = 0; j < thisVar.length; j++){
        product += Math.pow(thisVar[j], n);
        console.log(product);
      }
      if (product === i) {
        newArr.push(i);
      }
    
    }
    for (let i = 0; i < newArr.length; i++){
    total += newArr[i];
    console.log(total);
    }
      return total;
    }
       
    ```

Весь код при запуске дает правильные ответы:

```
digitnPowers(2); = 0
digitnPowers(3); = 1301
digitnPowers(4); = 19316
digitnPowers(5); = 443839
```

Журналы консоли представлены только для того, чтобы помочь мне научиться решать эту проблему. Моим первым шагом в оптимизации было бы удалить их. Меня беспокоит, что когда я запускаю эту функцию с 5, код должен быть l oop почти 300 000 раз, а эта функция с 4 - почти 27 000 раз. Если бы n было 6, потребовалось бы 3,1 миллиона петель. На данный момент код работает, но медленно. Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...