代码应该检查前几个三角形数字是否为素数(它们不是),但它不会运行。
<!DOCTYPE HTML>
<html>
<head><title>C1E9P1</title>
<script>
for(i = 3; i < 13; i++){
prime = true;
n = (i*(i+1))/2;
for(i = 2; i < Math.sqrt(n)+1; i++){
if(n%i == 0){
prime = false;
}
}
if(prime){
document.write(n+" is prime.");
document.write("<br>");
} else {
document.write(n+" is composite.");
document.write("<br>");
}
}
</script>
</head>
</html>
答案 0 :(得分:5)
您为嵌套的两个循环使用了相同的变量!
for(i = 3; i < 13; i++){ <-- i
for(i = 2; i < Math.sqrt(n)+1; i++){ <-- i
答案 1 :(得分:2)
试试这个并查看你的JavaScript控制台:
for(var i = 3; i < 13; i++){
var prime = true;
var n = (i*(i+1))/2;
for(var j = 2; j < Math.sqrt(n)+1; j++){
if(n%j == 0){
prime = false;
}
}
if(prime){
console.log(n+" is prime.");
console.log("<br>");
} else {
console.log(n+" is composite.");
console.log("<br>");
}
}
&#13;
答案 2 :(得分:1)
我修改了脚本,但不知道算法是否正确。
for(var i = 3; i < 13; i++){
var prime = true;
var n = (i*(i+1))/2;
for(var j = 2; j < Math.sqrt(n)+1; j++){
if(n%j == 0){
prime = false;
}
}
if(prime){
document.write(n+" is prime.");
document.write("<br>");
} else {
document.write(n+" is composite.");
document.write("<br>");
}
}
答案 3 :(得分:1)
您应该将内部for循环的变量名称更改为i以外的其他名称。
for(i = 3; i < 13; i++){
prime = true;
n = (i*(i+1))/2;
for(j = 2; j < Math.sqrt(n)+1; j++){
if(n%j == 0){
prime = false;
}
}
那之后你应该都很好。