# Find the largest good number in the divisors of given number N

Given a number N. The task is to find the largest good number in the divisors of given number N. A number X is defined as the good number if there is no such positive integer a > 1 such that a^2 is a divisor of X.

Examples:

```Input: N = 10
Output: 10
In 1, 2, 5, 10.
10 is the largest good number

Input: N = 12
Output: 6
In 1, 2, 3, 4, 6, 12.
6 is the largest good number
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Find all prime divisors of N. Assume they are p1, p2, …, pk (in O(sqrt(n)) time complexity). If the answer is a, then we know that for each 1 <= I <= k, obviously, a is not divisible by pi^2 (and all greater powers of pi). So a <= p1 × p2 ×… × pk. And we know that p1 × p2 × … × pk is itself a good number. So, the answer is p1 × p2 ×…× pk.

Below is the implementation of above approach:

## C++

 `// CPP program to find the largest, good ` `// number in the divisors of given number N. ` `#include ` `using` `namespace` `std; ` ` `  `// function to return distinct prime factors ` `vector<``int``> PrimeFactors(``int` `n) ` `{ ` `    ``// to store distinct prime factors ` `    ``vector<``int``> v; ` ` `  `    ``int` `x = n; ` ` `  `    ``// run a loop upto sqrt(n) ` `    ``for` `(``int` `i = 2; i * i <= n; i++) { ` `        ``if` `(x % i == 0) { ` ` `  `            ``// place this prime factor in vector ` `            ``v.push_back(i); ` `            ``while` `(x % i == 0) ` `                ``x /= i; ` `        ``} ` `    ``} ` ` `  `    ``// This condition is to handle the case when n ` `    ``// is a prime number greater than 1 ` `    ``if` `(x > 1) ` `        ``v.push_back(x); ` ` `  `    ``return` `v; ` `} ` ` `  `// function that returns good number ` `int` `GoodNumber(``int` `n) ` `{ ` `    ``// distinct prime factors ` `    ``vector<``int``> v = PrimeFactors(n); ` ` `  `    ``// to store answer ` `    ``int` `ans = 1; ` ` `  `    ``// product of all distinct prime ` `    ``// factors is required answer ` `    ``for` `(``int` `i = 0; i < v.size(); i++) ` `        ``ans *= v[i]; ` ` `  `    ``return` `ans; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `n = 12; ` ` `  `    ``// function call ` `    ``cout << GoodNumber(n); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java program to find the largest, good ` `// number in the divisors of given number N. ` ` `  `import` `java.util.*; ` ` `  `class` `GFG { ` `    ``// function to return distinct prime factors ` ` `  `    ``static` `Vector PrimeFactors(``int` `n) ` `    ``{ ` ` `  `        ``// to store distinct prime factors ` `        ``Vector v = ``new` `Vector(); ` `        ``int` `x = n; ` ` `  `        ``// run a loop upto sqrt(n) ` `        ``for` `(``int` `i = ``2``; i * i <= n; i++) { ` `            ``if` `(x % i == ``0``) { ` ` `  `                ``// place this prime factor in vector ` `                ``v.add(i); ` `                ``while` `(x % i == ``0``) ` `                    ``x /= i; ` `            ``} ` `        ``} ` ` `  `        ``// This condition is to handle the case when n ` `        ``// is a prime number greater than 1 ` `        ``if` `(x > ``1``) ` `            ``v.add(x); ` ` `  `        ``return` `v; ` `    ``} ` ` `  `    ``// function that returns good number ` `    ``static` `int` `GoodNumber(``int` `n) ` `    ``{ ` `        ``// distinct prime factors ` `        ``Vector v = ``new` `Vector(PrimeFactors(n)); ` ` `  `        ``// to store answer ` `        ``int` `ans = ``1``; ` ` `  `        ``// product of all distinct prime ` `        ``// factors is required answer ` `        ``for` `(``int` `i = ``0``; i < v.size(); i++) ` `            ``ans *= v.get(i); ` ` `  `        ``return` `ans; ` `    ``} ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` `        ``int` `n = ``12``; ` ` `  `        ``// function call ` `        ``System.out.println(GoodNumber(n)); ` `    ``} ` `} ` ` `  `// This code is contributed by ihritik `

## Python 3

 `# Python 3 program to find the  ` `# largest, good number in the  ` `# divisors of given number N. ` ` `  `# function to return distinct  ` `# prime factors ` `def` `PrimeFactors(n): ` ` `  `    ``# to store distinct  ` `    ``# prime factors ` `    ``v ``=` `[] ` ` `  `    ``x ``=` `n ` ` `  `    ``# run a loop upto sqrt(n) ` `    ``i ``=` `2` `    ``while``(i ``*` `i <``=` `n): ` `        ``if` `(x ``%` `i ``=``=` `0``) : ` ` `  `            ``# place this prime factor ` `            ``# in vector ` `            ``v.append(i) ` `            ``while` `(x ``%` `i ``=``=` `0``): ` `                ``x ``/``/``=` `i ` `                 `  `        ``i ``+``=` `1` ` `  `    ``# This condition is to handle  ` `    ``# the case when n is a prime  ` `    ``# number greater than 1 ` `    ``if` `(x > ``1``): ` `        ``v.append(x) ` ` `  `    ``return` `v ` ` `  `# function that returns good number ` `def` `GoodNumber(n): ` `     `  `    ``# distinct prime factors ` `    ``v ``=` `PrimeFactors(n) ` ` `  `    ``# to store answer ` `    ``ans ``=` `1` ` `  `    ``# product of all distinct prime ` `    ``# factors is required answer ` `    ``for` `i ``in` `range``(``len``(v)): ` `        ``ans ``*``=` `v[i] ` ` `  `    ``return` `ans ` ` `  `# Driver code ` `if` `__name__ ``=``=` `"__main__"``: ` `    ``n ``=` `12` ` `  `    ``# function call ` `    ``print``(GoodNumber(n)) ` ` `  `# This code is contributed ` `# by ChitraNayal `

## C#

 `// C# program to find the largest, good ` `// number in the divisors of given number N. ` `using` `System; ` `using` `System.Collections.Generic; ` `public` `class` `GFG { ` `    ``// function to return distinct prime factors ` ` `  `    ``static` `List<``int``> PrimeFactors(``int` `n) ` `    ``{ ` ` `  `        ``// to store distinct prime factors ` `        ``List<``int``> v = ``new` `List<``int``>(); ` `        ``int` `x = n; ` ` `  `        ``// run a loop upto sqrt(n) ` `        ``for` `(``int` `i = 2; i * i <= n; i++) { ` `            ``if` `(x % i == 0) { ` ` `  `                ``// place this prime factor in vector ` `                ``v.Add(i); ` `                ``while` `(x % i == 0) ` `                    ``x /= i; ` `            ``} ` `        ``} ` ` `  `        ``// This condition is to handle the case when n ` `        ``// is a prime number greater than 1 ` `        ``if` `(x > 1) ` `            ``v.Add(x); ` ` `  `        ``return` `v; ` `    ``} ` ` `  `    ``// function that returns good number ` `    ``static` `int` `GoodNumber(``int` `n) ` `    ``{ ` `        ``// distinct prime factors ` `        ``List<``int``> v = ``new` `List<``int``>(PrimeFactors(n)); ` ` `  `        ``// to store answer ` `        ``int` `ans = 1; ` ` `  `        ``// product of all distinct prime ` `        ``// factors is required answer ` `        ``for` `(``int` `i = 0; i < v.Count; i++) ` `            ``ans *= v[i]; ` ` `  `        ``return` `ans; ` `    ``} ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `Main(String[] args) ` `    ``{ ` `        ``int` `n = 12; ` ` `  `        ``// function call ` `        ``Console.WriteLine(GoodNumber(n)); ` `    ``} ` `} ` ` `  `// This code has been contributed by 29AjayKumar `

## PHP

 ` 1)  ` `        ``array_push``(``\$v``, ``\$x``);  ` ` `  `    ``return` `\$v``;  ` `}  ` ` `  `// function that returns good number  ` `function` `GoodNumber(``\$n``)  ` `{  ` `    ``// distinct prime factors  ` `    ``\$v` `= PrimeFactors(``\$n``);  ` ` `  `    ``// to store answer  ` `    ``\$ans` `= 1;  ` ` `  `    ``// product of all distinct prime  ` `    ``// factors is required answer  ` `    ``for` `(``\$i` `= 0; ``\$i` `< ``count``(``\$v``); ``\$i``++)  ` `        ``\$ans` `*= ``\$v``[``\$i``];  ` ` `  `    ``return` `\$ans``;  ` `}  ` ` `  `// Driver code  ` `\$n` `= 12;  ` ` `  `// function call  ` `echo` `GoodNumber(``\$n``);  ` ` `  `// This code is contributed by Rajput-Ji ` `?> `

Output:

```6
```

My Personal Notes arrow_drop_up

pawanasipugmailcom

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.