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:使用另一个函数,我们将计算给定数字之前所有素数的和。我们将在此函数中传递一个参数作为限制。此限制输入将定义将添加素数的范围。
步骤 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 中给定限制下所有素数的和。正如我们已经实现两个函数来获得所需的总和一样。此函数的时间复杂度取决于限制和限制内的最大数字。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP