Javascript 如何在每个表行上打印10个素数

Javascript 如何在每个表行上打印10个素数,javascript,html,Javascript,Html,我正在编写一个JavaScript,它在一个由10列组成的表中打印1到999之间的素数 一旦计数器变量达到10的值(意味着10个单元格已添加到当前行),然后我打印以启动新行并将变量重置为0。 我一直在尝试,我设法打印出表中的素数,但现在每10列创建一个新行是我失败的地方 任何协助都将不胜感激 下面是我的代码 <html> <head> <script language="javascript"> document

我正在编写一个JavaScript,它在一个由10列组成的表中打印1到999之间的素数

一旦计数器变量达到10的值(意味着10个单元格已添加到当前行),然后我打印
以启动新行并将变量重置为0。 我一直在尝试,我设法打印出表中的素数,但现在每10列创建一个新行是我失败的地方

任何协助都将不胜感激

下面是我的代码

<html>
    <head>
        <script language="javascript">
            document.write("<table border='1'>");
            document.write("<tr>");
            for(n = 0 ; n < 1000; n++){
                var x=1;
                if(n==0 || n==1) x=0;
                for(i=2;i<n;i++)
                {
                    if(n%i==0)
                    {
                        x=0;
                        break;
                    }
                }
                if(x==1)
                {
                    document.write("<td>"); 
                    // if prime print the numbers 
                    document.write(n);
                    document.write("</td>");
                }
                else
                { 
                // if not prime number do nothing 
                }
            }  
            document.write("</table>");
        </script>
    </head>
    <body>
   </body>
</html>

文件。填写(“”);
文件。填写(“”);
对于(n=0;n<1000;n++){
var x=1;
如果(n==0 | | n==1)x=0;

对于(i=2;i,您可以使用筛算法,例如1000

function getPrimes(max) {
    var sieve = [], i, j, primes = [];
    for (i = 2; i <= max; ++i) {
        if (!sieve[i]) {
            // i has not been marked -- it is prime
            primes.push(i);
            for (j = i << 1; j <= max; j += i) {
                sieve[j] = true;
            }
        }
    }
    return primes;
}
函数getPrimes(最大值){
变量筛=[],i,j,素数=[];

对于(i=2;i在循环之前创建计数器:

var cnt = 0;
在写出单元格之前,增加计数器并检查数值:

if(x==1)
{
  cnt++;
  if (cnt == 10)
  {
    cnt = 0;
    document.write("</tr><tr>");
  }
  document.write("<td>"); 
  document.write(n);
  document.write("</td>");
}
if(x==1)
{
cnt++;
如果(cnt==10)
{
cnt=0;
文件。填写(“”);
}
文件。填写(“”);
文件。写入(n);
文件。填写(“”);
}
此外,您在关闭表之前忘记关闭最后一行:

document.write("</tr>");
document.write("</table>");
document.write(“”);
文件。填写(“”);

我删除了你的
else
部分,并使用
ok
来计算素数。 如果此计数器为10、20、30,…(
ok%10==0&&ok>0
),则我使用
关闭实际行,并使用
打开新行


文件。填写(“”);
var-ok=0;
对于(n=0;n<1000;n++){
var x=1;
如果(n==0 | | n==1)x=0;
对于(i=2;i 0){
文件。填写(“”);
}
文件。填写(“”);
文件。写入(n);
文件。填写(“”);
ok++;
}
}  
文件。填写(“”);

这闻起来有点像家庭作业。素数生成得很清楚,但如何在每10列之后打破该表是我的问题。循环它们并取indexI的mod 10不知道该说什么,但对我来说,u是一颗星星
document.write("</tr>");
document.write("</table>");
<html>
    <head>
        <script language="javascript">
            document.write("<table border='1'><tr>");
            var ok = 0 ;
            for(n = 0 ; n < 1000; n++) {
                var x=1;
                if(n==0 || n==1) x=0;
                for(i=2 ; i<n ; i++) {
                    if(n%i==0) {
                        x=0;
                        break;
                    }
                }
                if(x==1) {
                  if ( ok % 10 === 0 && ok > 0 ) {
                     document.write("</tr><tr>");
                  }
                  document.write("<td>"); 
                  document.write(n);
                  document.write("</td>");
                  ok++;
                }
            }  
            document.write("</tr></table>");
        </script>
    </head>
    <body>
    </body>
</html>