Sum of array elements which are prime factors of a given number
Last Updated :
19 Apr, 2021
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:
- After complete traversal of the array, print the value of the sum as the result.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
bool isPrime( int n)
{
if (n <= 1)
return false ;
if (n <= 3)
return true ;
if (n % 2 == 0 || n % 3 == 0)
return false ;
for ( int i = 5; i * i <= n; i = i + 6)
if (n % i == 0 || n % (i + 2) == 0)
return false ;
return true ;
}
void primeFactorSum( int arr[], int n, int k)
{
int sum = 0;
for ( int i = 0; i < n; i++) {
if (k % arr[i] == 0 && isPrime(arr[i])) {
sum = sum + arr[i];
}
}
cout << sum;
}
int main()
{
int arr[] = { 1, 2, 3, 5, 6, 7, 15 };
int N = sizeof (arr) / sizeof (arr[0]);
int K = 35;
primeFactorSum(arr, N, K);
return 0;
}
|
Java
import java.io.*;
import java.lang.*;
import java.util.*;
class GFG
{
static boolean isPrime( int n)
{
if (n <= 1 )
return false ;
if (n <= 3 )
return true ;
if (n % 2 == 0 || n % 3 == 0 )
return false ;
for ( int i = 5 ; i * i <= n; i = i + 6 )
if (n % i == 0 || n % (i + 2 ) == 0 )
return false ;
return true ;
}
static void primeFactorSum( int arr[], int n, int k)
{
int sum = 0 ;
for ( int i = 0 ; i < n; i++) {
if (k % arr[i] == 0 && isPrime(arr[i]))
{
sum = sum + arr[i];
}
}
System.out.println(sum);
}
public static void main(String[] args)
{
int arr[] = { 1 , 2 , 3 , 5 , 6 , 7 , 15 };
int N = arr.length;
int K = 35 ;
primeFactorSum(arr, N, K);
}
}
|
Python3
def isPrime(n):
if (n < = 1 ):
return False
if (n < = 3 ):
return True
if (n % 2 = = 0 or n % 3 = = 0 ):
return False
i = 5
while (i * i < = n ):
if (n % i = = 0 or n % (i + 2 ) = = 0 ):
return False
i = i + 6
return True
def primeFactorSum(arr, n, k):
sum = 0
for i in range (n):
if (k % arr[i] = = 0 and isPrime(arr[i])):
sum = sum + arr[i]
print ( sum )
arr = [ 1 , 2 , 3 , 5 , 6 , 7 , 15 ]
N = len (arr)
K = 35
primeFactorSum(arr, N, K)
|
C#
using System;
class GFG
{
static bool isPrime( int n)
{
if (n <= 1)
return false ;
if (n <= 3)
return true ;
if (n % 2 == 0 || n % 3 == 0)
return false ;
for ( int i = 5; i * i <= n; i = i + 6)
if (n % i == 0 || n % (i + 2) == 0)
return false ;
return true ;
}
static void primeFactorSum( int []arr, int n, int k)
{
int sum = 0;
for ( int i = 0; i < n; i++) {
if (k % arr[i] == 0 && isPrime(arr[i]))
{
sum = sum + arr[i];
}
}
Console.Write(sum);
}
public static void Main( string [] args)
{
int []arr = { 1, 2, 3, 5, 6, 7, 15 };
int N = arr.Length;
int K = 35;
primeFactorSum(arr, N, K);
}
}
|
Javascript
<script>
function isPrime(n)
{
if (n <= 1)
return false ;
if (n <= 3)
return true ;
if (n % 2 == 0 || n % 3 == 0)
return false ;
var i;
for (i = 5; i * i <= n; i = i + 6)
if (n % i == 0 || n % (i + 2) == 0)
return false ;
return true ;
}
function primeFactorSum(arr, n, k)
{
var sum = 0;
var i;
for (i = 0; i < n; i++) {
if (k % arr[i] == 0 && isPrime(arr[i])) {
sum = sum + arr[i];
}
}
document.write(sum);
}
var arr = [1, 2, 3, 5, 6, 7, 15]
var N = arr.length;
var K = 35;
primeFactorSum(arr, N, K);
</script>
|
Time Complexity: O(N*?X), where X is the largest element in the array
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...