JavaScript 中所有素数的总和

javascriptweb developmentfront end technologyobject oriented programming更新于 2024/12/12 6:36:17

在给定的问题陈述中,我们必须借助 JavaScript 功能计算所有素数的总和。因此,为了计算总和,我们将设置素数的上限。

理解问题

问题是计算给定限制内所有素数的总和。因此,素数是一个大于 1 的正整数,并且这些数字除了 1 和它本身之外没有任何除数。例如,素数的极限是 10,所以小于 10 的素数是 2、3、5、7,这些数的和是 2 + 3 + 5 + 7 = 17。所以所需的结果应该是 17。所以我们的任务是实现代码来生成给定极限的素数之和。

给定问题的逻辑

为了解决这个问题,我们将使用 Javascript。为此,我们将基本上使用两个函数来获得所需的结果。

将创建第一个函数来检查当前数字是否为素数。我们还将验证 2 和数字的平方根之间是否有任何除数。如果我们找到了当前数字的除数,那么我们可以说该数字不是素数,因为素数不能被任何其他数字整除。在结果中,我们将说该数字不是素数。如果条件未得到验证,我们将返回素数。

第二个函数用于计算声明范围内所有素数的总和。因此,我们将使用循环遍历值。然后使用我们定义的第一个函数,我们将确定数字是否为素数。如果数字是素数,则添加该值以获得总和,最后我们将获得所需的结果作为所有素数的总和。

算法

步骤 1:因为我们必须计算给定限制内的素数的总和。因此,为此,我们将定义一个函数并将参数 num 作为输入传递。

步骤 2:我们知道素数从 2 开始。因此,我们将定义一个条件来检查给定的输入数字是否大于或等于 1。此条件检查是否存在任何负数,因为负数不是素数,因此返回 false。

步骤 3:现在我们将使用 for 循环迭代从 2 到数字的平方根的数字。并检查条件,如果找到除数,则该数字不是素数,因此我们将返回 false。

步骤 4:在上述条件之外,如果没有找到除数,则该数字是素数,因此我们将返回 true。

步骤 5:使用另一个函数,我们将计算给定数字之前所有素数的总和。我们将在此函数中传递一个参数作为限制。此限制输入将定义将添加素数的范围。

步骤 6:由于我们需要存储给定素数的总和,因此我们将使用变量来存储素数的总和并将值初始化为零。

步骤 7:现在我们需要从 2 开始迭代数字到极限。在循环内部,我们将检查该数字是否为素数。如果遇到素数,则将总和添加到 sum 变量中。

步骤 8:由于我们需要向控制台显示 sum 变量,因此我们将返回 sum 的值。

示例

// 检查数字是否为素数的函数
function isPrime(num) {
    if (num <= 1) { // 1 和负数不是素数
        return false;
    }
    // 检查从 2 到数字的平方根的除数
    for (let i = 2; i <= Math.sqrt(num); i++) {
        // 如果找到除数,则数字不是素数
        if (num % i === 0) {
            return false;
        }
    }
    // 如果未找到除数,则数字为素数
    return true;
}
// 获取所有素数之和的函数
function sumOfPrimes(limit) {
    let sum = 0;
    
    for (let i = 2; i <= limit; i++) {
        // 检查数字是否为素数
        if (isPrime(i)) {
            // 将素数添加到总和中
            sum += i;
        }
    }
    
    return sum; // 返回最终总和
}

const limit = 50; // 更改此值以设置上限
const sum = sumOfPrimes(limit);
console.log("素数之和最高为", limit, "is", sum);

输出

50 以内的素数之和为 328

复杂度

第一个用于检查数字是否为素数的函数使用循环来迭代数字,因此该函数的复杂度为 O(sqrt(n)),其中 n 是给定的数字。并且该函数所消耗的空间为 O(1),因为它为变量使用固定数量的内存。

第二个函数迭代从 2 到给定极限的素数。对于每次迭代,我们都调用上述函数,其时间复杂度为 O(sqrt(n))。因此,该函数的时间复杂度为 O(limit * sqrt(n))。并且该函数的空间复杂度也是 O(1),因为该函数为变量使用固定数量的内存。

结论

我们创建的代码提供了一种在 Javascript 中计算给定限制内所有素数之和的有效方法。我们已经实现了两个函数来获得所需的和。此函数的时间复杂度取决于限制和限制内的最大数字。


相关文章


有用资源