Open In App

Integer part of the geometric mean of the divisors of N

Given an integer N, the task is to find the integer part of the geometric mean of the divisors of N. The Geometric Mean is a special type of average where we multiply the numbers together and then take a square root (for two numbers), cube root (for three numbers), and so on.
 

Examples: 
Input: N = 4 
Output:
Divisors of 4 are 1, 2 and 4 
Geometric mean = (1 * 2 * 4)(1/3) = 8(1/3) = 2
Input: N = 16 
Output:
Divisors of 16 are 1, 2, 4, 8 and 16 
Geometric mean = (1 * 2 * 4 * 8 * 16)(1/5) = 1024(1/5) = 4 
 

 

 

Approach: It can be observed that a series will be formed for the values of N as 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, ….. whose Nth term is ??n?.
Below is the implementation of the above approach: 
 




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the integer
// part of the geometric mean
// of the divisors of n
int geometricMean(int n)
{
    return sqrt(n);
}
 
// Driver code
int main()
{
    int n = 16;
 
    cout << geometricMean(n);
 
    return 0;
}




// Java implementation of the approach
class GFG
{
 
// Function to return the integer
// part of the geometric mean
// of the divisors of n
static int geometricMean(int n)
{
    return (int) Math.sqrt(n);
}
 
// Driver code
public static void main(String []args)
{
    int n = 16;
    System.out.println(geometricMean(n));
}
}
 
// This code is contributed by Rajput-Ji




# Python3 implementation of the approach
from math import sqrt
 
# Function to return the integer
# part of the geometric mean
# of the divisors of n
def geometricMean(n) :
 
    return int(sqrt(n));
 
# Driver code
if __name__ == "__main__" :
 
    n = 16;
 
    print(geometricMean(n));
 
# This code is contributed by AnkitRai01




// C# implementation of the approach
using System;   
 
class GFG
{
  
// Function to return the integer
// part of the geometric mean
// of the divisors of n
static int geometricMean(int n)
{
    return (int) Math.Sqrt(n);
}
  
// Driver code
public static void Main(String []args)
{
    int n = 16;
    Console.WriteLine(geometricMean(n));
}
}
 
// This code is contributed by PrinciRaj1992




<script>
 
// Javascript implementation of the approach
 
// Function to return the integer
// part of the geometric mean
// of the divisors of n
function geometricMean(n)
{
    return Math.sqrt(n);
}
 
// Driver code
var n = 16;
document.write(geometricMean(n));
 
</script>

Output: 
4

 

Time Complexity: O(logn) because using inbuilt sqrt function

Auxiliary Space: O(1)


Article Tags :