我要回答这个问题,告诉你应该怎么做,因为你的那本书很糟糕。
首先,永远不要使用document.write
. 这是一个过时的功能,并且存在许多更好的替代方案。
首先,让我们定义一个函数来测试一个数字是否为素数:
function isPrime(n) {
if( n < 2) return false;
// a number is prime if it is divisible only by 1 and itself.
// so, let's check it
var rt = Math.sqrt(n), i;
for( i=2; i<=rt; i++) {
if( n%i == 0) {
// the number is divisible by something else.
return false;
}
}
return true;
}
现在,我们构建我们的主要逻辑。首先,我们需要一个表:
var tbl = document.createElement('table'),
tbd = tbl.appendChild(document.createElement('tbody')),
tr, td, i, found = 0;
我还定义了我们需要的变量。现在我们继续循环,看看我们得到了什么:
for( i=2; i<1000; i++) { // we can start at 2, because as I said earlier 1 is not prime
if( isPrime(i)) {
// if the number of found numbers is a multiple of 10, start a new row
// the first prime we find will be "number 0", which is divisible by 10.
if( found % 10 == 0) tr = tbd.appendChild(document.createElement('tr'));
td = tr.appendChild(document.createElement('td'));
td.appendChild(document.createTextNode(i));
found++;
}
}
为了符合标准,最后一行必须包含完整的 10 个单元格。在这里,我用 colspan'd 单元格“填充”它
if( found % 10 != 0) {
td = tr.appendChild(document.createElement('td'));
td.colSpan = 10 - found % 10;
}
最后,我们将表格添加到页面中:
document.body.appendChild(tbl);
完毕!这是它的实际演示!