Источник проблемы 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 миллиона петель. На данный момент код работает, но медленно. Есть идеи?