📜  数组元素的和,它们是给定数量的素数

📅  最后修改于: 2021-04-17 14:05:00             🧑  作者: Mango

给定大小为N的数组arr []和正整数K ,任务是找到所有数组元素的总和,这些元素都是K的素数。

例子:

方法:想法是遍历数组,对于每个数组元素,检查它是否是K的素数。将那些元素加到满足条件的总和上。请按照以下步骤解决问题:

  • 初始化一个变量,例如sum ,以存储所需的和。
  • 遍历给定的数组,并对每个数组元素执行以下操作:
    • 检查数组元素是否为K的素数。
    • 如果发现是真的,则将当前元素添加到sum中
  • 遍历数组后,将总和的值作为结果打印。

下面是上述方法的实现:

C++
// C++ program for the above approach
 
#include 
using namespace std;
 
// Function to check if a
// number is prime or not
bool isPrime(int n)
{
    // Corner cases
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;
 
    // Check if n is a
    // multiple of 2 or 3
    if (n % 2 == 0 || n % 3 == 0)
        return false;
 
    // Above condition allows to check only
    // for every 6th number, starting from 5
    for (int i = 5; i * i <= n; i = i + 6)
 
        // If n is a multiple of i and i + 2
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
 
    return true;
}
 
// Function to find the sum of array
// elements which are prime factors of K
void primeFactorSum(int arr[], int n, int k)
{
 
    // Stores the required sum
    int sum = 0;
 
    // Traverse the given array
    for (int i = 0; i < n; i++) {
 
        // If current element is a prime
        // factor of k, add it to the sum
        if (k % arr[i] == 0 && isPrime(arr[i])) {
            sum = sum + arr[i];
        }
    }
 
    // Print the result
    cout << sum;
}
 
// Driver Code
int main()
{
 
    // Given arr[]
    int arr[] = { 1, 2, 3, 5, 6, 7, 15 };
 
    // Store the size of the array
    int N = sizeof(arr) / sizeof(arr[0]);
 
    int K = 35;
 
    primeFactorSum(arr, N, K);
 
    return 0;
}


Java
// Java program for the above approach
import java.io.*;
import java.lang.*;
import java.util.*;
 
class GFG
{
 
    // Function to check if a
    // number is prime or not
    static boolean isPrime(int n)
    {
       
        // Corner cases
        if (n <= 1)
            return false;
        if (n <= 3)
            return true;
 
        // Check if n is a
        // multiple of 2 or 3
        if (n % 2 == 0 || n % 3 == 0)
            return false;
 
        // Above condition allows to check only
        // for every 6th number, starting from 5
        for (int i = 5; i * i <= n; i = i + 6)
 
            // If n is a multiple of i and i + 2
            if (n % i == 0 || n % (i + 2) == 0)
                return false;
 
        return true;
    }
 
    // Function to find the sum of array
    // elements which are prime factors of K
    static void primeFactorSum(int arr[], int n, int k)
    {
 
        // Stores the required sum
        int sum = 0;
 
        // Traverse the given array
        for (int i = 0; i < n; i++) {
 
            // If current element is a prime
            // factor of k, add it to the sum
            if (k % arr[i] == 0 && isPrime(arr[i]))
            {
                sum = sum + arr[i];
            }
        }
 
        // Print the result
        System.out.println(sum);
    }
 
    // Driver code
    public static void main(String[] args)
    {
 
        // Given arr[]
        int arr[] = { 1, 2, 3, 5, 6, 7, 15 };
 
        // Store the size of the array
        int N = arr.length;
        int K = 35;
        primeFactorSum(arr, N, K);
    }
}
 
// This code is contributed by Kingash.


Python3
# Python3 program for the above approach
 
# Function to check if a
# number is prime or not
def isPrime(n):
     
    # Corner cases
    if (n <= 1):
        return False
    if (n <= 3):
        return True
 
    # Check if n is a
    # multiple of 2 or 3
    if (n % 2 == 0 or n % 3 == 0):
        return False
 
    # Above condition allows to check only
    # for every 6th number, starting from 5
    i = 5
     
    while (i * i <= n ):
 
        # If n is a multiple of i and i + 2
        if (n % i == 0 or n % (i + 2) == 0):
            return False
         
        i = i + 6
         
    return True
 
# Function to find the sum of array
# elements which are prime factors of K
def primeFactorSum(arr, n, k):
 
    # Stores the required sum
    sum = 0
 
    # Traverse the given array
    for i in range(n):
 
        # If current element is a prime
        # factor of k, add it to the sum
        if (k % arr[i] == 0 and isPrime(arr[i])):
            sum = sum + arr[i]
         
    # Print the result
    print(sum)
 
# Driver Code
 
# Given arr[]
arr = [ 1, 2, 3, 5, 6, 7, 15 ]
 
# Store the size of the array
N = len(arr)
 
K = 35
 
primeFactorSum(arr, N, K)
 
# This code is contributed by code_hunt


C#
// C# program for the above approach
using System;
 
class GFG
{
 
    // Function to check if a
    // number is prime or not
    static bool isPrime(int n)
    {
       
        // Corner cases
        if (n <= 1)
            return false;
        if (n <= 3)
            return true;
 
        // Check if n is a
        // multiple of 2 or 3
        if (n % 2 == 0 || n % 3 == 0)
            return false;
 
        // Above condition allows to check only
        // for every 6th number, starting from 5
        for (int i = 5; i * i <= n; i = i + 6)
 
            // If n is a multiple of i and i + 2
            if (n % i == 0 || n % (i + 2) == 0)
                return false;
 
        return true;
    }
 
    // Function to find the sum of array
    // elements which are prime factors of K
    static void primeFactorSum(int []arr, int n, int k)
    {
 
        // Stores the required sum
        int sum = 0;
 
        // Traverse the given array
        for (int i = 0; i < n; i++) {
 
            // If current element is a prime
            // factor of k, add it to the sum
            if (k % arr[i] == 0 && isPrime(arr[i]))
            {
                sum = sum + arr[i];
            }
        }
 
        // Print the result
        Console.Write(sum);
    }
 
    // Driver code
    public static void Main(string[] args)
    {
 
        // Given arr[]
        int []arr = { 1, 2, 3, 5, 6, 7, 15 };
 
        // Store the size of the array
        int N = arr.Length;
        int K = 35;
        primeFactorSum(arr, N, K);
    }
}
 
// This code is contributed by ukasp.


输出:
12

时间复杂度: O(N *√X),其中X是数组中最大的元素
辅助空间: O(1)