考慮到我們有81,讓我們分割它:8和1.如果我們得到這個數字的總和,它會是9,對吧?讓我們來看看9的任何冪是81.是的,9的平方是81.ab是一個數字,找到(a + b)^ n = ab
我想找到所有這些數字,直到它達到10000.我一直在編碼,但有一些我總是卡住。這是我的代碼;
var results = [];
for (var num = 0; num < 82; num++) {
var splittedNumbersArray = num.toString(10).split("").map(Number);
var sum = splittedNumbersArray.reduce(sumof, 0);
var powersArray = [];
for (var power = 0; power < 11; power++) {
var powerNumber = Math.pow(sum, power);
powersArray.push(powerNumber);
}
if (controlSolution(powersArray, num) === true) {
results.push(num);
}
}
function sumof(a, b) {
return a + b;
}
function controlSolution(a, v) {
for (var index = 0; index < a.length; index++) {
if (a[index] === v) {
return true;
}
}
return false;
}
當我調試通過控制檯的代碼,它說變量num
是82,但81後的for
循環應該停止了吧?我也檢查過,它在81後停止了! (我瞭解這部分內容)
爲什麼說我82輸入console.log(sayi)
?我認爲這就是爲什麼我的kontrolet
功能不起作用。
當我檢查powersArray
如果它包括num
,我已經看到了,它是。但爲什麼results
沒有數字81?
我該如何解決這個問題?感謝您的回答。
因爲邏輯是...將數字增加1並存儲該值,運行檢查以查看它是否有效....如果數字無效,則不會將數字還原回來。 – epascarello
當sayi = 82時,即在達到81之後,循環停止。 – user3382203
我並不是說這是錯誤的,但用本地語言而不是英語來命名變量和函數使得理解代碼的功能變得更加困難,而當您向其他不需要幫助的人尋求幫助時,這可能會產生問題說那種語言,例如在StackOverflow上。 – Frxstrem