Saturday, December 28, 2024
Google search engine
HomeData Modelling & AIFind Sum of numbers in given Range when numbers are modified as...

Find Sum of numbers in given Range when numbers are modified as given

Find the sum of all the numbers between the range l and r. Here each number is represented by the sum of its distinct prime factors. 

Examples:

Input:  l = 1, r = 6
Output: 17
Explanation:  For 1, sum of prime factors = 0
For 2, Sum of Prime factors = 2
For 3, Sum of Prime factors = 3
For 4, Sum of Prime factors = 2
For 5, Sum of Prime factors = 5
For 6, Sum of Prime factors = 2 + 3 = 5
So, Total sum of all prime factors for the given range = 2 + 3 + 2 + 5 + 5 = 17 

Input:  l = 11, r = 15
Output: 46
Explanation: For 11, sum of prime factors = 11
For 12, Sum of Prime factors = 2 + 3 = 5
For 13, Sum of Prime factors = 13
For 14, Sum of Prime factors = 2 + 7 = 9
For 15, Sum of Prime factors = 3 + 5 = 8
So, Total sum of all prime factors for the given range = 11 + 5 + 13 + 9 + 8 = 46

Approach: To solve the problem follow the below steps:

  • Create a function to find out all prime factors of a number and sum all prime factors which will represent that number.
  • Sum all the modified numbers in the range [l, r] numbers and return that as the total sum.

Below is the implementation of the above approach.  

C++




// C++ code to implement the approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to check prime
bool isPrime(int x)
{
    if (x == 1)
        return false;
    if (x == 2)
        return true;
 
    for (int i = 2; i * i <= x; i++) {
 
        // If X has factor that is i,
        // then return not Prime
        if (x % i == 0)
            return false;
    }
 
    // If we reach here means no factor
    // found so return prime
    return true;
}
 
// This function is to represent a number
// as a sum of all its prime factors
int SumOfPrimeFactors(int l, int r)
{
    int sum = 0, ans = 0;
    for (int i = l; i <= r; i++) {
        sum = 0;
        for (int j = 1; j * j <= i; j++) {
 
            // If num has factor i and that
            // also prime
            if (i % j == 0) {
                if (isPrime(j))
                    sum += j;
                if (i / j != j and isPrime(i / j))
                    sum += i / j;
            }
        }
        ans += sum;
    }
 
    return ans;
}
 
// Driver Code
int main()
{
    int l = 11, r = 15;
 
    // Function call
    cout << SumOfPrimeFactors(l, r);
 
    return 0;
}


Java




// Java code to implement the approach
 
import java.io.*;
 
class GFG {
 
    // Function to check prime
    static boolean isPrime(int x)
    {
        if (x == 1)
            return false;
        if (x == 2)
            return true;
 
        for (int i = 2; i * i <= x; i++) {
 
            // If X has factor that is i,
            // then return not Prime
            if (x % i == 0)
                return false;
        }
 
        // If we reach here means no factor
        // found so return prime
        return true;
    }
 
    // This function is to represent a number
    // as a sum of all its prime factors
    static int SumOfPrimeFactors(int l, int r)
    {
        int sum = 0, ans = 0;
        for (int i = l; i <= r; i++) {
            sum = 0;
            for (int j = 1; j * j <= i; j++) {
                // If num has factor i and that
                // also prime
                if (i % j == 0) {
                    if (isPrime(j)) {
                        sum += j;
                    }
                    if (i / j != j && isPrime(i / j)) {
                        sum += i / j;
                    }
                }
            }
            ans += sum;
        }
 
        return ans;
    }
 
    public static void main(String[] args)
    {
        int l = 11, r = 15;
 
        // Function call
        System.out.print(SumOfPrimeFactors(l, r));
    }
}
 
// This code is contributed by lokeshmvs21.


Python3




# python code to implement the approach
 
import math
# Function to check prime
def isPrime(x):
    if (x == 1):
        return False
    if (x == 2):
        return True
     
    for i in range(2,int(math.sqrt(x))+1):
        # If X has factor that is i,
        # then return not Prime
        if (x % i == 0):
            return False
     
    # If we reach here means no factor
    # found so return prime
    return True
 
# This function is to represent a number
# as a sum of all its prime factors
def SumOfPrimeFactors(l,r):
    sumvar = 0
    ans = 0
    #for ( i = l i <= r i++)
    for i in range(l,r+1):
        sumvar = 0
        # for (int j = 1; j * j <= i; j++) {
        for j in range(1,int(math.sqrt(i))+1):
           
            # If num has factor i and that
            # also prime
            if (i % j == 0):
                if (isPrime(j)):
                    sumvar += j
                if (int(i / j) != j and isPrime(int(i / j))):
                    sumvar += math.floor(i / j)
                     
        ans += sumvar
    return ans
 
 
l = 11
r = 15
 
# Function call
print(SumOfPrimeFactors(l, r))
 
# This code is contributed by ksam24000


C#




// C# implementation
using System;
 
public class GFG {
 
    // Function to check prime
    public static bool isPrime(int x)
    {
        if (x == 1)
            return false;
        if (x == 2)
            return true;
 
        for (int i = 2; i * i <= x; i++) {
 
            // If X has factor that is i,
            // then return not Prime
            if (x % i == 0)
                return false;
        }
 
        // If we reach here means no factor
        // found so return prime
        return true;
    }
 
    // This function is to represent a number
    // as a sum of all its prime factors
    public static int SumOfPrimeFactors(int l, int r)
    {
        int sum = 0, ans = 0;
        for (int i = l; i <= r; i++) {
            sum = 0;
            for (int j = 1; j * j <= i; j++) {
 
                // If num has factor i and that
                // also prime
                if (i % j == 0) {
                    if (isPrime(j) == true)
                        sum += j;
                    if ((int)(i / j) != j
                        && isPrime((int)(i / j)))
                        sum += i / j;
                }
            }
            ans += sum;
        }
 
        return ans;
    }
 
    static public void Main()
    {
        int l = 11, r = 15;
 
        // Function call
        Console.WriteLine(SumOfPrimeFactors(l, r));
    }
}
// this code is contributed by ksam24000


Javascript




// Javascript code to implement the approach
 
// Function to check prime
function isPrime(x)
{
    if (x == 1)
        return false;
    if (x == 2)
        return true;
 
    for (let i = 2; i * i <= x; i++) {
 
        // If X has factor that is i,
        // then return not Prime
        if (x % i == 0)
            return false;
    }
 
    // If we reach here means no factor
    // found so return prime
    return true;
}
 
// This function is to represent a number
// as a sum of all its prime factors
function SumOfPrimeFactors(l, r)
{
    let sum = 0, ans = 0;
    for (let i = l; i <= r; i++) {
        sum = 0;
        for (let j = 1; j * j <= i; j++) {
 
            // If num has factor i and that
            // also prime
            if (i % j == 0) {
                if (isPrime(j))
                    sum += j;
                if (i / j != j && isPrime(i / j))
                    sum += i / j;
            }
        }
        ans += sum;
    }
 
    return ans;
}
 
// Driver Code
let l = 11, r = 15;
 
// Function call
console.log(SumOfPrimeFactors(l, r));
 
// This code is contributed by Samim Hossain Mondal.


Output

46

Time Complexity: O(N * sqrt(r) * sqrt(r)) where n is the number of elements in the range and it takes maximum sqrt(r) time each to find all the factors and check if the factors are prime.
Auxiliary Space: O(1)

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

Commit to GfG’s Three-90 Challenge! Purchase a course, complete 90% in 90 days, and save 90% cost click here to explore.

Last Updated :
02 Dec, 2022
Like Article
Save Article


Previous

<!–

8 Min Read | Java

–>


Next


<!–

8 Min Read | Java

–>

Share your thoughts in the comments

RELATED ARTICLES

Most Popular

Recent Comments