Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用document.write()显示素数_Javascript - Fatal编程技术网

Javascript 使用document.write()显示素数

Javascript 使用document.write()显示素数,javascript,Javascript,我有一个学校作业,我似乎一直在做 编写一个脚本,在由>10列组成的表中打印介于1和999之间的素数。使用document.write()语句创建表元素,使用>计数器变量创建表,使其由10列组成。计数器>变量应以初始值0开始,并在>代码每次识别素数并将其打印到表格单元格中时递增一。计数器变量>达到值10(表示当前行中已添加了10个单元格)后,打印>以启动新行并将变量重置为0 我无法找出表行和计数器的错误位置。另外,我可能将document.write()方法放错了位置。当前,表格仅垂直显示 以下是

我有一个学校作业,我似乎一直在做

编写一个脚本,在由>10列组成的表中打印介于1和999之间的素数。使用document.write()语句创建表元素,使用>计数器变量创建表,使其由10列组成。计数器>变量应以初始值0开始,并在>代码每次识别素数并将其打印到表格单元格中时递增一。计数器变量>达到值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>

函数素数(num){
文件。写(“”);
if(num<2)
返回false;
对于(变量i=2;i
请把我推向正确的方向,不要给我答案。我想看看我能不能弄明白

谢谢

试试这个:


函数素数(num){
if(num<2)
返回false;
对于(变量i=2;i

我想知道这是否是你想要的。我没有对您的代码做太多更改。

您的代码中有一些错误:

  • 开启器在函数内部,因此实际上它开启了1000次
  • 计数器已重置,因此无需使用模数(
    %
    ),只需将其与10进行比较即可
  • 最后缺少一个
  • 您的函数
    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>');
函数isPrime(num){
如果(num<2)返回false;
对于(变量i=2;i

这是一个棘手的问题(我不能使用document.write,但你明白了)

你需要做的第一件事是将质数的检测与任何类型的文档编写完全分开。基本上写一个
isPrimeNumber
函数,它不做任何文档编写Jaredpar,我只是添加了document.write(“”);高于计数器变量。到目前为止看起来更好…:)在这种情况下,很难说你的问题出在哪里只是“把你的工作推到正确的方向”。你没有关闭最后一行。最后一行缺少
。我找到了!!我的代码是正确的,除了document.write(“”)位置。谢谢你,JaredPar。我的愚蠢错误是我的css。我有一张桌子的边框:1px纯黑。我忘了添加表行(tr)。谢谢你,ariel。我甚至都没想过这个问题。@napalmfish如果答案有用的话,你可以接受,谢谢
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>');