Given an array arr[] of size N and a positive integer K, the task is to find the sum of all array elements which are prime factors of K.
Examples:
Input: arr[] = {1, 2, 3, 5, 6, 7, 15}, K = 35
Output: 12
Explanation: From the given array, 5 and 7 are prime factors of 35. Therefore, required sum = 5 + 7 = 12.Input: arr[] = {1, 3, 5, 7}, K = 42
Output: 10
Explanation: From the given array, 3 and 7 are prime factors of 42. Therefore, required sum = 3 + 7 = 10.
Approach: The idea is to traverse the array and for each array element, check if it is a prime factor of K or not. Add those elements to the sum, for which the condition satisfies. Follow the steps below to solve the problem:
- Initialize a variable, say sum, to store the required sum.
-
Traverse the given array, and for each array element, perform the following operations:
- Check if the array element is a prime factor of K or not.
- If found to be true, add the current element to the sum.
- After complete traversal of the array, print the value of the sum as the result.
Below is the implementation of the above approach:
// C++ program for the above approach #include <bits/stdc++.h> 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 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 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# 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. |
<script> // Javascript program for the above approach // Function to check if a // number is prime or not function 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 || n % 3 == 0)
return false ;
var i;
// Above condition allows to check only
// for every 6th number, starting from 5
for (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 function primeFactorSum(arr, n, k)
{ // Stores the required sum
var sum = 0;
var i;
// Traverse the given array
for (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
document.write(sum);
} // Driver Code // Given arr[]
var arr = [1, 2, 3, 5, 6, 7, 15]
// Store the size of the array
var N = arr.length;
var K = 35;
primeFactorSum(arr, N, K);
</script> |
12
Time Complexity: O(N*?X), where X is the largest element in the array
Auxiliary Space: O(1)