1 回答

TA貢獻1864條經驗 獲得超6個贊
這一行是錯誤的:
d = d++;
d++是一個后增量,它增加變量但計算為舊值。因此,當您將結果分配回變量時,它會將其設置回原始值。結果,您有一個無限循環(huán)。
它應該是:
d = d + 1;
要不就:
d++;
另一個錯誤是:
v = v % 10;
這應該除以v10,但它只是設置v為最后一個數字。它應該是:
v = Math.floor(v / 10);
在下面的代碼中,我簡化了所有循環(huán)。它們不是設置變量并繼續(xù)循環(huán),而是在循環(huán)確定答案后立即返回。如果循環(huán)結束而不返回,則它們返回相反的值。
function P6() {
var n = parseInt(prompt("Please enter a value"));
for (var i = 2; i <= n; i++) {
if (prime(i) && has7(i)) {
console.log(i);
}
}
}
function prime(s) {
for (var d = 2; d <= s / 2; d++) {
if (s % d == 0) {
return false;
}
}
return true;
}
function has7(v) {
while (v != 0) {
var last = v % 10;
if (last == 7) {
return true;
}
v = Math.floor(v / 10);
}
return false;
}
P6();
添加回答
舉報