Skip to content
Related Articles

Related Articles

Hardy-Ramanujan Theorem
  • Last Updated : 09 Apr, 2021

Hardy Ramanujam theorem states that the number of prime factors of n will approximately be log(log(n)) for most natural numbers n
Examples : 
 

5192 has 2 distinct prime factors and log(log(5192)) = 2.1615 
51242183 has 3 distinct prime facts and log(log(51242183)) = 2.8765

As the statement quotes, it is only an approximation. There are counter examples such as 
 

510510 has 7 distinct prime factors but log(log(510510)) = 2.5759 
1048576 has 1 prime factor but log(log(1048576)) = 2.62922

This theorem is mainly used in approximation algorithms and its proof lead to bigger concepts in probability theory. 
 

C++




// CPP program to count all prime factors
#include <bits/stdc++.h>
using namespace std;
 
// A function to count prime factors of
// a given number n
int exactPrimeFactorCount(int n)
{
    int count = 0;
 
    if (n % 2 == 0) {
        count++;
        while (n % 2 == 0)
            n = n / 2;
    }
 
    // n must be odd at this point. So we can skip
    // one element (Note i = i +2)
    for (int i = 3; i <= sqrt(n); i = i + 2) {
        if (n % i == 0) {
            count++;
            while (n % i == 0)
                n = n / i;
        }
    }
 
    // This condition is to handle the case when n
    // is a prime number greater than 2
    if (n > 2)
        count++;
    return count;
}
 
// driver function
int main()
{
    int n = 51242183;
    cout << "The number of distinct prime factors is/are "
         << exactPrimeFactorCount(n) << endl;
    cout << "The value of log(log(n)) is "
         << log(log(n)) << endl;
    return 0;
}

Java




// Java program to count all prime factors
import java.io.*;
 
class GFG {
     
    // A function to count prime factors of
    // a given number n
    static int exactPrimeFactorCount(int n)
    {
        int count = 0;
     
        if (n % 2 == 0) {
            count++;
            while (n % 2 == 0)
                n = n / 2;
        }
     
        // n must be odd at this point. So we can skip
        // one element (Note i = i +2)
        for (int i = 3; i <= Math.sqrt(n); i = i + 2)
        {
            if (n % i == 0) {
                count++;
                while (n % i == 0)
                    n = n / i;
            }
        }
     
        // This condition is to handle the case
        // when n is a prime number greater than 2
        if (n > 2)
            count++;
        return count;
    }
     
    // driver function
    public static void main (String[] args)
    {
        int n = 51242183;
        System.out.println( "The number of distinct "
                            + "prime factors is/are "
            + exactPrimeFactorCount(n));
        System.out.println( "The value of log(log(n))"
                   + " is " + Math.log(Math.log(n))) ;
    }
}
 
// This code is contributed by anuj_67.

Python3




# Python3 program to count all
# prime factors
import math
 
# A function to count
# prime factors of
# a given number n
def exactPrimeFactorCount(n) :
    count = 0
    if (n % 2 == 0) :
        count = count + 1
        while (n % 2 == 0) :
            n = int(n / 2)
 
    # n must be odd at this
    # point. So we can skip
    # one element (Note i = i +2)
    i = 3
     
    while (i <= int(math.sqrt(n))) :
        if (n % i == 0) :    
            count = count + 1
            while (n % i == 0) :
                n = int(n / i)
        i = i + 2
 
    # This condition is to
    # handle the case when n
    # is a prime number greater
    # than 2
    if (n > 2) :
        count = count + 1
    return count
 
# Driver Code
n = 51242183
print ("The number of distinct prime factors is/are {}".
       format(exactPrimeFactorCount(n), end = "\n"))
print ("The value of log(log(n)) is {0:.4f}"
            .format(math.log(math.log(n))))
 
# This code is contributed by Manish Shaw
# (manishshaw1)

C#




// C# program to count all prime factors
using System;
 
class GFG {
     
    // A function to count prime factors of
    // a given number n
    static int exactPrimeFactorCount(int n)
    {
        int count = 0;
     
        if (n % 2 == 0) {
            count++;
            while (n % 2 == 0)
                n = n / 2;
        }
     
        // n must be odd at this point. So
        // we can skip one element
        // (Note i = i +2)
        for (int i = 3; i <= Math.Sqrt(n);
                                 i = i + 2)
        {
            if (n % i == 0) {
                count++;
                while (n % i == 0)
                    n = n / i;
            }
        }
     
        // This condition is to handle the
        // case when n is a prime number
        // greater than 2
        if (n > 2)
            count++;
             
        return count;
    }
     
    // Driver function
    public static void Main ()
    {
        int n = 51242183;
         
        Console.WriteLine( "The number of"
        + " distinct prime factors is/are "
              + exactPrimeFactorCount(n));
               
        Console.WriteLine( "The value of "
                       + "log(log(n)) is "
                + Math.Log(Math.Log(n))) ;
    }
}
 
// This code is contributed by anuj_67.

PHP




<?php
// PHP program to count all prime factors
 
// A function to count
// prime factors of
// a given number n
function exactPrimeFactorCount($n)
{
    $count = 0;
 
    if ($n % 2 == 0)
    {
        $count++;
        while ($n % 2 == 0)
            $n = $n / 2;
    }
 
    // n must be odd at this
    // point. So we can skip
    // one element (Note i = i +2)
    for($i = 3; $i <= sqrt($n); $i = $i + 2)
    {
        if ($n % $i == 0)
        {
            $count++;
            while ($n % $i == 0)
                $n = $n / $i;
        }
    }
 
    // This condition is to
    // handle the case when n
    // is a prime number greater
    // than 2
    if ($n > 2)
        $count++;
    return $count;
}
 
    // Driver Code
    $n = 51242183;
    echo "The number of distinct prime".
         " factors is/are ",exactPrimeFactorCount($n),"\n";
          
    echo "The value of log(log(n)) ".
         "is ",log(log($n)),"\n";
 
// This code is contributed by m_kit
?>

Javascript




<script>
// Javascript program to count all prime factors
 
// A function to count
// prime factors of
// a given number n
function exactPrimeFactorCount(n)
{
    let count = 0;
 
    if (n % 2 == 0)
    {
        count++;
        while (n % 2 == 0)
            n = n / 2;
    }
 
    // n must be odd at this
    // point. So we can skip
    // one element (Note i = i +2)
    for(let i = 3; i <= Math.sqrt(n); i = i + 2)
    {
        if (n % i == 0)
        {
            count++;
            while (n % i == 0)
                n = n / i;
        }
    }
 
    // This condition is to
    // handle the case when n
    // is a prime number greater
    // than 2
    if (n > 2)
        count++;
    return count;
}
 
    // Driver Code
    let n = 51242183;
    document.write("The number of distinct prime factors is/are " +
                   exactPrimeFactorCount(n) + "<br>");
         
    document.write("The value of log(log(n)) is "+ Math.log(Math.log(n)) + "<br>");
 
// This code is contributed by _saurabh_jaiswal
</script>
Output: 
The number of distinct prime factors is/are 3
The value of log(log(n)) is 2.8765

 

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.




My Personal Notes arrow_drop_up
Recommended Articles
Page :