Sum of all perfect numbers present in an array
Last Updated :
03 Nov, 2022
Given an array arr[] containing N positive integer. The task is to find the sum of all the perfect numbers from the array.
A number is perfect if it is equal to the sum of its proper divisors i.e. the sum of its positive divisors excluding the number itself.
Examples:
Input: arr[] = {3, 6, 9}
Output: 6
Proper divisor sum of 3 = 1
Proper divisor sum of 6 = 1 + 2 + 3 = 6
Proper divisor sum of 9 = 1 + 3 = 4
Input: arr[] = {17, 6, 10, 6, 4}
Output: 12
Approach: Initialize sum = 0 and for every element of the array, find the sum of its proper divisors say sumFactors. If arr[i] = sumFactors then update the resultant sum as sum = sum + arr[i]. Print the sum in the end.
Below is the implementation of the above approach:
C++
#include <iostream>
using namespace std;
int sumOfFactors( int n)
{
int sum = 0;
for ( int f = 1; f <= n / 2; f++)
{
if (n % f == 0)
{
sum += f;
}
}
return sum;
}
int getSum( int arr[], int n)
{
int sum = 0;
for ( int i = 0; i < n; i++)
{
if (arr[i] > 0 &&
arr[i] == sumOfFactors(arr[i]))
{
sum += arr[i];
}
}
return sum;
}
int main()
{
int arr[10] = { 17, 6, 10, 6, 4 };
int n = sizeof (arr) / sizeof (arr[0]);
cout << (getSum(arr, n));
return 0;
}
|
Java
class GFG {
static int sumOfFactors( int n)
{
int sum = 0 ;
for ( int f = 1 ; f <= n / 2 ; f++) {
if (n % f == 0 ) {
sum += f;
}
}
return sum;
}
static int getSum( int [] arr, int n)
{
int sum = 0 ;
for ( int i = 0 ; i < n; i++) {
if (arr[i] > 0 && arr[i] == sumOfFactors(arr[i])) {
sum += arr[i];
}
}
return sum;
}
public static void main(String[] args)
{
int [] arr = { 17 , 6 , 10 , 6 , 4 };
int n = arr.length;
System.out.print(getSum(arr, n));
}
}
|
Python3
def sumOfFactors(n):
sum = 0
for f in range ( 1 , n / / 2 + 1 ):
if (n % f = = 0 ):
sum + = f
return sum
def getSum(arr, n):
sum = 0
for i in range (n):
if (arr[i] > 0 and
arr[i] = = sumOfFactors(arr[i])) :
sum + = arr[i]
return sum
arr = [ 17 , 6 , 10 , 6 , 4 ]
n = len (arr)
print (getSum(arr, n))
|
C#
using System;
class GFG
{
static int sumOfFactors( int n)
{
int sum = 0;
for ( int f = 1; f <= n / 2; f++)
{
if (n % f == 0)
{
sum += f;
}
}
return sum;
}
static int getSum( int [] arr, int n)
{
int sum = 0;
for ( int i = 0; i < n; i++)
{
if (arr[i] > 0 && arr[i] == sumOfFactors(arr[i]))
{
sum += arr[i];
}
}
return sum;
}
static public void Main ()
{
int [] arr = { 17, 6, 10, 6, 4 };
int n = arr.Length;
Console.WriteLine(getSum(arr, n));
}
}
|
Javascript
<script>
function sumOfFactors( n)
{
let sum = 0;
for (let f = 1; f <= n / 2; f++) {
if (n % f == 0) {
sum += f;
}
}
return sum;
}
function getSum( arr, n)
{
let sum = 0;
for (let i = 0; i < n; i++) {
if (arr[i] > 0 && arr[i] == sumOfFactors(arr[i])) {
sum += arr[i];
}
}
return sum;
}
let arr = [ 17, 6, 10, 6, 4 ];
let n = arr.length;
document.write(getSum(arr, n));
</script>
|
Time Complexity: O(n * max(arr)), where max(arr) is the largest element of the array arr.
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...