C/C++ Program to find Product of unique prime factors of a number - GeeksforGeeks

05 Dec, 2018
Given a number n, we need to find the product of all of its unique prime factors. Prime factors: It is basically a factor of the number that is a prime number itself.
Examples:
Input: num = 10
Output: Product is 10
Explanation:
Here, the input number is 10 having only 2 prime factors and they are 5 and 2.
And hence their product is 10.

Input : num = 25
Output: Product is 5
Explanation:
Here, for the input to be 25  we have only one unique prime factor i.e 5.
And hence the required product is 5.

Method 1 (Simple)Using a loop from i = 2 to n and check if i is a factor of n then check if i is prime number itself if yes then store product in product variable and continue this process till i = n.
// C++ program to find product of// unique prime factors of a number#include <bits/stdc++.h>using namespace std;  long long int productPrimeFactors(int n){    long long int product = 1;      for (int i = 2; i <= n; i++) {          // Checking if 'i' is factor of num        if (n % i == 0) {              // Checking if 'i' is a Prime number            bool isPrime = true;            for (int j = 2; j <= i / 2; j++) {                if (i % j == 0) {                    isPrime = false;                    break;                }            }              // condition if 'i' is Prime number            // as well as factor of num            if (isPrime) {                product = product * i;            }        }    }      return product;}  // driver functionint main(){    int n = 44;    cout << productPrimeFactors(n);    return 0;}
22

Method 2 (Efficient)The idea is based on Efficient program to print all prime factors of a given number
// C++ program to find product of// unique prime factors of a number#include <bits/stdc++.h>using namespace std;  // A function to print all prime factors of// a given number nlong long int productPrimeFactors(int n){    long long int product = 1;      // Handle prime factor 2 explicitly so that    // can optimally handle other prime factors.    if (n % 2 == 0) {        product *= 2;        while (n % 2 == 0)            n = n / 2;    }      // n must be odd at this point. So we can    // skip one element (Note i = i +2)    for (int i = 3; i <= sqrt(n); i = i + 2) {        // While i divides n, print i and        // divide n        if (n % i == 0) {            product = product * i;            while (n % i == 0)                n = n / i;        }    }      // This condition is to handle the case when n    // is a prime number greater than 2    if (n > 2)        product = product * n;      return product;}  // driver functionint main(){    int n = 44;    cout << productPrimeFactors(n);    return 0;}
22

Please refer complete article on Product of unique prime factors of a number for more details!
C Programs
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
C Program to read contents of Whole File
Producer Consumer Problem in C
C program to find the length of a string
Exit codes in C/C++ with Examples
Difference between break and continue statement in C
Regular expressions in C
How to store words in an array in C?
Handling multiple clients on server with multithreading using Socket Programming in C/C++
Conditional wait and signal in multi-threading
C / C++ Program for Dijkstra's shortest path algorithm | Greedy Algo-7