JavaScript 所有素数的总和

JavaScript 所有素数的总和

在给定的问题陈述中,我们需要利用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 :利用另一个函数,我们将计算给定数字之前所有素数的总和。并在该函数中传入一个名为limit的参数。这个限制输入将定义一个范围,将素数添加到其中。

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

第7步: :现在我们需要从2开始迭代到限制数。在循环内部,我们将检查该数是否为素数。如果遇到素数,将其加入到sum变量中。

第8步: :由于我们需要将sum变量显示到控制台上,所以我们将返回sum的值。

示例

// Function to check the number is prime
function isPrime(num) {
   if (num <= 1) {  // 1 and negative numbers are not prime
      return false;
   }
   // check for divisors from 2 to square root of the number
   for (let i = 2; i <= Math.sqrt(num); i++) {
      // if a divisor is found, the number is not prime
      if (num % i === 0) {
         return false;
      }
   }
   // if no divisors are found, the number is prime
   return true;
}
 // Function to get the sum of all the primes
function sumOfPrimes(limit) {
   let sum = 0;

   for (let i = 2; i <= limit; i++) {
      // check if the number is prime
      if (isPrime(i)) {
         // add the prime number to the sum
         sum += i;
      }
   }

   return sum;  // return the final sum
}

const limit = 50; // Change this value to set the upper limit
const sum = sumOfPrimes(limit);
console.log("Sum of prime numbers up to", limit, "is", sum);

输出

Sum of prime numbers up to 50 is 328

复杂性

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

第二个函数迭代从2到给定限制的素数。在每次迭代中,我们调用了上述具有时间复杂度O(sqrt(n))的函数。因此,此函数的时间复杂度是O(limit * sqrt(n))。该函数的空间复杂度也是O(1),因为它使用了一定数量的内存来存储变量。

结论

我们创建的代码以一种高效的方式计算了Javascript中在给定限制范围内所有素数的和。因为我们实现了两个函数来获取所需的和,所以这个函数的时间复杂度取决于限制和限制范围内的最大数字。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程