Hardy-Ramanujan Theorem

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 nExamples :  
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++
Java
Python3
C#
PHP
Javascript
// CPP program to count all prime factors#include <bits/stdc++.h>using namespace std; // A function to count prime factors of// a given number nint 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 functionint 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 program to count all prime factorsimport 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 program to count all# prime factorsimport math # A function to count# prime factors of# a given number ndef 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 Coden = 51242183print ("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# program to count all prime factorsusing 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 program to count all prime factors // A function to count// prime factors of// a given number nfunction 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?>
<script>// Javascript program to count all prime factors // A function to count// prime factors of// a given number nfunction 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>
The number of distinct prime factors is/are 3
The value of log(log(n)) is 2.8765
 
jit_t
vt_m
manishshaw1
_saurabh_jaiswal
number-theory
Prime Number
Mathematical
number-theory
Mathematical
Prime Number
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Modular multiplicative inverse
Find first and last digits of a number
Find cubic root of a number
Program to add two binary strings
Count all possible paths from top left to bottom right of a mXn matrix
Algorithm to solve Rubik's Cube
Program for distance between two points on earth
Pascal's Triangle
Segment Tree | Set 1 (Sum of given range)
Postfix to Infix