# Java Program to find Product of unique prime factors of a number

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.

`// Java program to find product of` `// unique prime factors of a number.` ` ` `public` `class` `GFG {` ` ` `public` `static` `long` `productPrimeFactors(` `int` `n)` ` ` `{` ` ` `long` `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` ` ` `boolean` `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;` ` ` `}` ` ` ` ` `public` `static` `void` `main(String[] args)` ` ` `{` ` ` `int` `n = ` `44` `;` ` ` `System.out.print(productPrimeFactors(n));` ` ` `}` `}` ` ` `// Contributed by _omg` |

**Output:**

22

**Method 2 (Efficient)**

The idea is based on Efficient program to print all prime factors of a given number

`// Java program to find product of` `// unique prime factors of a number.` `import` `java.util.*;` `import` `java.lang.*;` ` ` `public` `class` `GFG {` ` ` `public` `static` `long` `productPrimeFactors(` `int` `n)` ` ` `{` ` ` `long` `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 <= Math.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;` ` ` `}` ` ` ` ` `public` `static` `void` `main(String[] args)` ` ` `{` ` ` `int` `n = ` `44` `;` ` ` `System.out.print(productPrimeFactors(n));` ` ` `}` `}` ` ` `// Contributed by _omg` |

**Output:**

22

Please refer complete article on Product of unique prime factors of a number for more details!