如何使用 JavaScript 在表中显示素数 #

How to display prime #'s in table using JavaScript

本文关键字:显示 何使用 JavaScript      更新时间:2023-09-26

我试图在表格中显示 1-999 的质数,但我只是在网上或其他任何地方都找不到简单的答案。

这是书中的问题:

素数是只能由自身除以的数字 或一个。素数的示例包括 1、3、5、13 和 17。 编写一个脚本,在 由 10 列组成的表。您将需要使用多个循环和条件语句来测试所有除法可能性。用 document.write() 语句来创建表元素和 计数器变量,用于创建表,使其由 10 列组成。 计数器变量应以初始值 0 开头,并且 每次代码标识质数时递增 1 并将其打印在表格单元格中。一旦计数器变量达到一个值 的 10 个(意味着当前行已添加 10 个单元格), 打印</tr><tr>以开始新行并将变量重置为 0。救 文档作为PrimeNumbers.html。

任何帮助将不胜感激!我真的被困在这个上面。

我将回答这个问题,告诉你应该怎么做,因为你的那本书很糟糕。

首先,永远不要使用document.write。这是一个过时的功能,存在许多更好的替代方案。

首先,让我们定义一个函数来测试一个数字是否是素数:

function isPrime(n) {
    if( n < 2) return false;
    // a number is prime if it is divisible only by 1 and itself.
    // so, let's check it
    var rt = Math.sqrt(n), i;
    for( i=2; i<=rt; i++) {
        if( n%i == 0) {
            // the number is divisible by something else.
            return false;
        }
    }
    return true;
}

现在,我们构建主逻辑。首先,我们需要一个表:

var tbl = document.createElement('table'),
    tbd = tbl.appendChild(document.createElement('tbody')),
    tr, td, i, found = 0;

我还定义了我们需要的变量。现在我们只是循环,看看我们得到什么:

for( i=2; i<1000; i++) { // we can start at 2, because as I said earlier 1 is not prime
    if( isPrime(i)) {
        // if the number of found numbers is a multiple of 10, start a new row
        // the first prime we find will be "number 0", which is divisible by 10.
        if( found % 10 == 0) tr = tbd.appendChild(document.createElement('tr'));
        td = tr.appendChild(document.createElement('td'));
        td.appendChild(document.createTextNode(i));
        found++;
    }
}

为了符合标准,最后一行必须具有完整的 10 个单元格。在这里,我用一个colspan'd单元格"填充"它

if( found % 10 != 0) {
    td = tr.appendChild(document.createElement('td'));
    td.colSpan = 10 - found % 10;
}

最后,我们将表格添加到页面中:

document.body.appendChild(tbl);

做!这是它的演示!

下面是获取 1 - 999 以内的素数的简单示例

var i, 
    prime, 
    upper = 999,
    lower = 1,
    n;
for (n = lower + 1; n < upper; n++) {
    prime = 1;
    for (i = 2; i < n; i++)
    if (n % i == 0) {
        prime = 0;
        break;
    }
    if (prime) {
        console.log(n);
    }
}

将这些值追加到表中。

只是为了得到质数:

function is_prime(n)
{
    if ((n < 2) || ((n % 2) == 0)) {
        return (n == 2);
    }
    for (f = 3; (f * f) <= n; f += 2) {
        if ((n % f) == 0) {
            return false;
        }
    }
    return true;
}
var primes = [];
for (n = 1; n < 1000; n++) {
    if (is_prime(n)) {
        primes.push(n);
    }
}
console.log(primes);

祝你好运!