📜  求 1 到 n 之间素数的乘积

📅  最后修改于: 2022-05-13 01:57:14.273000             🧑  作者: Mango

求 1 到 n 之间素数的乘积

给定一个数 n,我们需要找到 1 到 n 之间所有素数的乘积。
例子:

Input: 5
Output: 30
Explanation: product of prime numbers between 1 to 5 is 2 * 3 * 5 = 30 

Input : 7
Output : 210

使用埃拉托色尼筛法找到从 1 到 n 的所有素数,然后计算乘积。

以下是通过 Eratosthenes 的方法找到小于或等于给定整数n的所有素数的算法:

当算法终止时,列表中所有未标记的数字都是素数,我们使用循环计算素数的乘积。

C++
// CPP Program to find product
// of prime numbers between 1 to n
#include 
using namespace std;
 
// Returns product of primes in range from
// 1 to n.
long ProdOfPrimes(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 product of primes generated
    // through Sieve.
    long prod = 1;
    for (int i = 2; i <= n; i++)
        if (prime[i])
            prod *= i;
    return prod;
}
 
// Driver code
int main()
{
    int n = 10;
    cout << ProdOfPrimes(n);
    return 0;
}


Java
// Java Program to find product
// of prime numbers between 1 to n
import java.util.Arrays;
 
class GFG {
     
    // Returns product of primes in range from
    // 1 to n.
    static long ProdOfPrimes(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 product of primes generated
        // through Sieve.
        long prod = 1;
 
        for (int i = 2; i <= n; i++)
            if (prime[i])
                prod *= i;
 
        return prod;
    }
     
    // Driver code
    public static void main (String[] args)
    {
         
        int n = 10;
         
        System.out.print(ProdOfPrimes(n));
    }
}
 
// This code is contributed by Anant Agarwal.


Python3
# Python3 Program to find product
# of prime numbers between 1 to n
 
# Returns product of primes
# in range from 1 to n.
def ProdOfPrimes(n):
 
    # Array to store prime numbers
    prime = [True for i in range(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 product of primes
    # generated through Sieve.
    prod = 1
    for i in range(2, n+1):
        if (prime[i]):
            prod *= i
    return prod
 
# Driver code
n = 10
print(ProdOfPrimes(n))
 
# This code is contributed by Anant Agarwal.


C#
// C# Program to find product of
// prime numbers between 1 to n
using System;
 
public class GFG
{
     
    // Returns product of primes
    // in range from 1 to n.
    static long ProdOfPrimes(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 product of primes generated
        // through Sieve.
        long prod = 1;
 
        for (int i = 2; i <= n; i++)
            if (prime[i])
                prod *= i;
 
        return prod;
    }
     
    // Driver code
    public static void Main ()
    {
         
        int n = 10;
         
        Console.Write(ProdOfPrimes(n));
    }
}
 
// This code is contributed by Sam007


PHP


Javascript


输出:

210