📜  程序查找介于1到n之间的质数之和

📅  最后修改于: 2021-04-27 18:53:41             🧑  作者: Mango

编写程序以查找1到n之间所有素数的总和。

例子:

Input : 10
Output : 17
Explanation : Primes between 1 to 10 : 2, 3, 5, 7.

Input : 11
Output : 28
Explanation : Primes between 1 to 11 : 2, 3, 5, 7, 11.

一个简单的解决方案是遍历从1到n的所有数字。对于每个数字,请检查其是否为质数。如果是,则将其添加到结果中。

一个有效的解决方案是使用Eratosthenes筛子查找直到n的所有素数,然后求和。

C++
// C++ program to find sum of primes in
// range from 1 to n.
#include 
using namespace std;
  
// Returns sum of primes in range from
// 1 to n.
int sumOfPrimes(int n)
{
    // Array to store prime numbers
    bool prime[n + 1];
  
    // Create a boolean array "prime[0..n]"
    // and initialize all entries it as true.
    // A value in prime[i] will finally be
    // false if i is Not a prime, else true.
    memset(prime, true, n + 1);
  
    for (int p = 2; p * p <= n; p++) {
  
        // If prime[p] is not changed, then
        // it is a prime
        if (prime[p] == true) {
  
            // Update all multiples of p
            for (int i = p * 2; i <= n; i += p)
                prime[i] = false;
        }
    }
  
    // Return sum of primes generated through
    // Sieve.
    int sum = 0;
    for (int i = 2; i <= n; i++)
        if (prime[i])
            sum += i;
    return sum;
}
  
// Driver code
int main()
{
    int n = 11;
    cout << sumOfPrimes(n);
    return 0;
}


Java
// Java program to find
// sum of primes in
// range from 1 to n.
import java.io.*;
import java.util.*;
  
class GFG {
      
    // Returns sum of primes
    // in range from
    // 1 to n.
    static int sumOfPrimes(int n)
    {
        // Array to store prime numbers
        boolean prime[]=new boolean[n + 1];
       
        // Create a boolean array "prime[0..n]"
        // and initialize all entries it as true.
        // A value in prime[i] will finally be
        // false if i is Not a prime, else true.
        Arrays.fill(prime, true);
       
        for (int p = 2; p * p <= n; p++) {
       
            // If prime[p] is not changed, then
            // it is a prime
            if (prime[p] == true) {
       
                // Update all multiples of p
                for (int i = p * 2; i <= n; i += p)
                    prime[i] = false;
            }
        }
       
        // Return sum of primes generated through
        // Sieve.
        int sum = 0;
        for (int i = 2; i <= n; i++)
            if (prime[i])
                sum += i;
        return sum;
    }
   
   // Driver code
    public static void main(String args[])
    {
        int n = 11;
        System.out.print(sumOfPrimes(n));
    }
}
  
  
// This code is contributed
// by Nikita Tiwari.


Python
# Python program to find sum of primes
# in range from 1 to n.
  
# Returns sum of primes in range from
# 1 to n
  
def sumOfPrimes(n):
    # list to store prime numbers
    prime = [True] * (n + 1)
      
    # Create a boolean array "prime[0..n]"
    # and initialize all entries it as true.
    # A value in prime[i] will finally be
    # false if i is Not a prime, else true.
      
    p = 2
    while p * p <= n:
        # If prime[p] is not changed, then
        # it is a prime
        if prime[p] == True:
            # Update all multiples of p
            i = p * 2
            while i <= n:
                prime[i] = False
                i += p
        p += 1    
           
    # Return sum of primes generated through
    # Sieve.
    sum = 0
    for i in range (2, n + 1):
        if(prime[i]):
            sum += i
    return sum
  
# Driver code
n = 11
print sumOfPrimes(n)
  
# This code is contributed by Sachin Bisht


C#
// C# program to find
// sum of primes in
// range from 1 to n.
using System;
  
class GFG {
      
    // Returns sum of primes
    // in range from
    // 1 to n.
    static int sumOfPrimes(int n)
    {
          
        // Array to store prime numbers
        bool []prime=new bool[n + 1];
      
        // Create a boolean array "prime[0..n]"
        // and initialize all entries it as true.
        // A value in prime[i] will finally be
        // false if i is Not a prime, else true.
        for(int i = 0; i < n + 1; i++)
        prime[i] = true;
      
          
      
        for (int p = 2; p * p <= n; p++)
        {
      
            // If prime[p] is not changed,
            // then it is a prime
            if (prime[p] == true)
            {
      
                // Update all multiples of p
                for (int i = p * 2; i <= n; i += p)
                    prime[i] = false;
            }
        }
      
        // Return sum of primes 
        // generated  through Sieve.
        int sum = 0;
        for (int i = 2; i <= n; i++)
            if (prime[i])
                sum += i;
        return sum;
    }
  
    // Driver code
    public static void Main()
    {
        int n = 11;
        Console.Write(sumOfPrimes(n));
    }
}
  
// This code is contributed by nitin mittal.


PHP


输出:

28