2014-02-18 32 views
0

我有一份似乎被卡住的学校作业。使用document.write()显示素数

编写一个脚本,该脚本在由10列组成的表中打印1到999之间的素数。使用document.write()语句创建表格元素,并使用> counter变量来创建表格,使其包含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

你需要做的第一件事就是完全隔离从任何类型的文件编写检测素数。基本上写一个'isPrimeNumber'函数,它不会写任何文档 – JaredPar

+0

JaredPar,我只是添加了document.write('

');高于计数器变量。到目前为止看起来更好...... :) –

+0

在这种情况下,很难说你的问题只是“推动你走向正确的方向”。 – rendon

回答

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>'); 

这里的小提琴工作(我不能在此文件撰写使用,b你明白了)http://jsfiddle.net/bortao/D2bzk/

+0

谢谢你,ariel。我甚至没有考虑模数。 –

+0

@napalmfish如果有帮助,您可以接受答案,谢谢 – ariel

-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> 

我不知道如果这是你在找什么,但。我的代码没有太多变化。