Related Articles

# Minimize the value of N by applying the given operations

• Difficulty Level : Basic
• Last Updated : 31 May, 2021

Given an integer N, below operations can be performed any number of times on N

1. Multiply N by any positive integer X i.e. N = N * X.
2. Replace N with square root of N (N must be an integer) i.e. N = sqrt(N).

The task is to find the minimum integer to which N can be reduced with the above operations.
Examples:

Input: N = 20
Output: 10
We can multiply 20 by 5, then take sqrt(20*5) = 10, this is the minimum number that 20 can be reduced to with the given operations.
Input: N = 36
Output:
Take sqrt(36). Number 6 can’t be reduced further.

Approach:

1. First factorize the number N.
2. Say, 12 has factors 2, 2 and 5. Only the factors that are repeating can be reduced with sqrt(n) i.e. sqrt(2*2) = 2.
3. The numbers appearing only once in the factors cannot be further reduced.
4. So, the final answer will be the product of all the distinct prime factors of number N

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the above approach``#include ``#define ll long long int``using` `namespace` `std;` `// function to return the product of``// distinct prime factors of a number``ll minimum(ll n)``{``    ``ll product = 1;` `    ``// find distinct prime``    ``for` `(``int` `i = 2; i * i <= n; i++) {``        ``if` `(n % i == 0) {``            ``while` `(n % i == 0)``                ``n = n / i;``            ``product = product * i;``        ``}``    ``}``    ``if` `(n >= 2)``        ``product = product * n;` `    ``return` `product;``}` `// Driver code``int` `main()``{``    ``ll n = 20;``    ``cout << minimum(n) << endl;` `    ``return` `0;``}`

## Java

 `// Java implementation of the above approach``import` `java.util.*;` `class` `solution``{` ` ``// function to return the product of`` ``// distinct prime factors of a number``static` `int` `minimum(``int` `n)``{``    ``int` `product = ``1``;` `    ``// find distinct prime``    ``for` `(``int` `i = ``2``; i * i <= n; i++) {``        ``if` `(n % i == ``0``) {``            ``while` `(n % i == ``0``)``                ``n = n / i;``            ``product = product * i;``        ``}``    ``}``    ``if` `(n >= ``2``)``        ``product = product * n;` `    ``return` `product;``}` `// Driver code``public` `static` `void` `main(String arr[])``{``    ``int` `n = ``20``;``    ``System.out.println(minimum(n));` `}``}``//This code is contributed by``//Surendra_Gangwar`

## Python3

 `# Python3 implementation of above approach` `# function to return the product``# of distinct prime factors of a``# numberdef minSteps(str):``def` `minimum(n):``    ` `    ``product ``=` `1``    ` `    ``# find distinct prime``    ``i ``=` `2``    ``while` `i ``*` `i <``=` `n:``        ``if` `n ``%` `i ``=``=` `0``:``            ``while` `n ``%` `i ``=``=` `0``:``                ``n ``=` `n ``/` `i``            ``product ``=` `product ``*` `i``        ``i ``=` `i ``+` `1``    ``if` `n >``=` `2``:``        ``product ``=` `product ``*` `n``    ``return` `product` `# Driver code` `# Get the binary string``n ``=` `20``print``(minimum(n))``        ` `# This code is contributed``# by Shashank_Sharma`

## C#

 `// C# implementation of the above approach``class` `GFG``{` `// function to return the product of``// distinct prime factors of a number``static` `int` `minimum(``int` `n)``{``    ``int` `product = 1;` `    ``// find distinct prime``    ``for` `(``int` `i = 2; i * i <= n; i++)``    ``{``        ``if` `(n % i == 0)``        ``{``            ``while` `(n % i == 0)``                ``n = n / i;``            ``product = product * i;``        ``}``    ``}``    ``if` `(n >= 2)``        ``product = product * n;` `    ``return` `product;``}` `// Driver code``static` `void` `Main()``{``    ``int` `n = 20;``    ``System.Console.WriteLine(minimum(n));``}``}` `// This code is contributed by mits`

## PHP

 `= 2)``        ``\$product` `= ``\$product` `* ``\$n``;` `    ``return` `\$product``;``}` `// Driver code``\$n` `= 20;``echo` `minimum(``\$n``),``"\n"``;` `// This code is contributed by ANKITRAI1``?>`

## Javascript

 ``
Output:
`10` My Personal Notes arrow_drop_up