Minimize the value of N by applying the given operations

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: 6
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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the above approach
#include <bits/stdc++.h>
#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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP implementation of the
// above approach
  
// function to return the product of
// distinct prime factors of a number
function minimum($n)
{
    $product = 1;
  
    // find distinct prime
    for ($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
$n = 20;
echo minimum($n),"\n";
  
// This code is contributed by ANKITRAI1
?>

chevron_right


Output:

10


My Personal Notes arrow_drop_up