dsalgo 0.3.7

A package for Datastructures and Algorithms.
Documentation
use crate::bit_length::bit_length_128;

/// mainly used for initializing prime_numbers vec with capacity.
pub fn prime_pi_approx_ln(n: u128) -> u128 {
    if n < 2 {
        return 0;
    }
    return n * 3 / bit_length_128(n) as u128 >> 1;
    // suppose pi(x) ~= [x / ln(x)] * 1.1
    // = [x / log_2(x) * (log_2(x) / ln(x))] * 1.1
    // = [x / log_2(x) * ln(2)^{-1}] * 1.1
    // ~= [x / log_2(x) * 1.4427] * 1.1
    // ~= x * 3 / log_2(x) / 2
}