1 回答
TA贡献1864条经验 获得超6个赞
这一行是错误的:
d = d++;
d++是一个后增量,它增加变量但计算为旧值。因此,当您将结果分配回变量时,它会将其设置回原始值。结果,您有一个无限循环。
它应该是:
d = d + 1;
要不就:
d++;
另一个错误是:
v = v % 10;
这应该除以v10,但它只是设置v为最后一个数字。它应该是:
v = Math.floor(v / 10);
在下面的代码中,我简化了所有循环。它们不是设置变量并继续循环,而是在循环确定答案后立即返回。如果循环结束而不返回,则它们返回相反的值。
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();
添加回答
举报
