我正在编写一个JavaScript,它在一个包含10列的表中打印1到999之间的素数。
一旦计数器变量达到值10(意味着已将10个单元格添加到当前行),我打印</tr><tr>
以开始新行并将变量重置为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>
答案 0 :(得分:1)
在循环之前创建计数器:
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>");
}
此外,您在关闭表格之前忘记关闭最后一行:
document.write("</tr>");
document.write("</table>");
答案 1 :(得分:1)
我删除了您的else
部分,并使用ok
来计算素数。
如果此计数器为10,20,30,...(ok % 10 === 0 && ok > 0
),则使用<\tr>
关闭实际行,然后使用<tr>
打开新行。
<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>
答案 2 :(得分:0)
您可以使用筛选算法,例如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;
}
然后
for(n = 0 ; n < 100; n++){
if(n % 10 == 0)