使用document.write()显示素数

时间:2014-02-18 01:00:40

标签: javascript

我的学校作业似乎被困在了。

  

编写一个脚本,在包含> 10列的表格中打印1到999之间的素数。使用document.write()语句创建表元素和>计数器变量以创建表,使其包含10列。计数器>变量应该以初始值0开始,并且每当您的>代码识别素数并将其打印在表格单元格中时,它将递增1。一旦计数器变量>达到值10(意味着已将10个单元格添加到当前行),打印>开始新行并将变量重置为0.

我无法弄清楚表格行和计数器的错误或错误。另外,我可能已将document.write()方法放在错误的位置。目前,该表仅垂直显示。

这就是我所拥有的:

<script>
    function primeNumbers(num) {
        document.write('<table>');
        if (num < 2) 
            return false;
        for (var i = 2; i < num; i++) {
            if (num % i == 0)
                return false;
        }
        return true;
    }   
    document.write('<tr>');
    var counter = 0;
    for (var i = 0; i < 999; i++) {
        if (primeNumbers(i)) {
            if (counter % 10 == 0) {
                document.write('</tr><tr>');
                counter = 0;
                }
            counter++;
            document.write('<td>' + i + '</td>');
        }
    }
    document.write('</table>');
</script>

请把我推向正确的方向,不要给我答案。我想知道我是否可以解决这个问题。

谢谢!

2 个答案:

答案 0 :(得分:1)

您的代码中存在一些错误:

  • <table>开启者在函数内部,实际上它开了1000次。
  • 计数器已重置,因此您无需使用模数(%),只需与10进行比较。
  • 最后遗漏了</tr>
  • 您的功能primeNumbers名称错误,最好是致电isPrime

以下是代码:

function isPrime(num) {
    if (num < 2) return false;
    for (var i = 2; i < num; i++) {
        if (num % i == 0) return false;
    }
    return true;
}

document.write("<table><tr>");
var counter = 0;
for (var i = 0; i < 999; i++) {
    if (isPrime(i)) {
        if (counter == 10) {
            document.write('</tr><tr>');
            counter = 0;
        }
        counter++;
        document.write('<td>' + i + '</td>');
    }
}
document.write('</tr></table>');

这是小提琴工作(我不能在这里使用document.write,但你明白了)http://jsfiddle.net/bortao/D2bzk/

答案 1 :(得分:-1)

试试这个:http://jsfiddle.net/ezn7f/

<script>
function primeNumbers(num) {
    if (num < 2) 
        return false;
    for (var i = 2; i < num; i++) {
        if (num % i == 0)
            return false;
    }
    return true;
}
document.write('<table><tr>');
var counter = 0;
for (var i = 0; i < 999; i++) {
    if (primeNumbers(i)) {

        if (counter % 10 == 0) {
            document.write('</tr><tr>');
            counter = 0;
        }
         counter++;
         document.write('<td>' + i + '</td>');
    }
}
document.write('</table>');
</script>

我想知道这是不是你要找的东西。我的代码没有太大变化。