Related Articles
Find the largest good number in the divisors of given number N
• Last Updated : 11 Mar, 2019

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
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :