Count numbers from range whose prime factors are only 2 and 3 - GeeksforGeeks

18 Nov, 2021
Given two positive integers L and R, the task is to count the elements from the range [L, R] whose prime factors are only 2 and 3.Examples:  
Input: L = 1, R = 10 Output: 6 2 = 2 3 = 3 4 = 2 * 2 6 = 2 * 3 8 = 2 * 2 * 2 9 = 3 * 3Input: L = 100, R = 200 Output: 5  
 
Approach: Start a loop from L to R and for every element num:  
While num is divisible by 2, divide it by 2.
While num is divisible by 3, divide it by 3.
If num = 1 then increment the count as num has only 2 and 3 as its prime factors.
Print the count in the end.Below is the implementation of the above approach: 
C++
Java
Python3
C#
PHP
Javascript
// C++ program to count the numbers within a range// whose prime factors are only 2 and 3#include <bits/stdc++.h>using namespace std; // Function to count the number within a range// whose prime factors are only 2 and 3int findTwoThreePrime(int l, int r){    // Start with 2 so that 1 doesn't get counted    if (l == 1)        l++;     int count = 0;     for (int i = l; i <= r; i++) {        int num = i;         // While num is divisible by 2, divide it by 2        while (num % 2 == 0)            num /= 2;         // While num is divisible by 3, divide it by 3        while (num % 3 == 0)            num /= 3;         // If num got reduced to 1 then it has        // only 2 and 3 as prime factors        if (num == 1)            count++;    }     return count;} // Driver codeint main(){    int l = 1, r = 10;    cout << findTwoThreePrime(l, r);    return 0;}
//Java program to count the numbers within a range// whose prime factors are only 2 and 3 import java.io.*; class GFG {     // Function to count the number within a range// whose prime factors are only 2 and 3static int findTwoThreePrime(int l, int r){    // Start with 2 so that 1 doesn't get counted    if (l == 1)        l++;     int count = 0;     for (int i = l; i <= r; i++) {        int num = i;         // While num is divisible by 2, divide it by 2        while (num % 2 == 0)            num /= 2;         // While num is divisible by 3, divide it by 3        while (num % 3 == 0)            num /= 3;         // If num got reduced to 1 then it has        // only 2 and 3 as prime factors        if (num == 1)            count++;    }     return count;} // Driver code    public static void main (String[] args) {         int l = 1, r = 10;        System.out.println (findTwoThreePrime(l, r));    }//This code is contributed by ajit   }
# Python3 program to count the numbers# within a range whose prime factors# are only 2 and 3 # Function to count the number within# a range whose prime factors are only# 2 and 3def findTwoThreePrime(l, r) :     # Start with 2 so that 1    # doesn't get counted    if (l == 1) :        l += 1     count = 0     for i in range(l, r + 1) :        num = i         # While num is divisible by 2,        # divide it by 2        while (num % 2 == 0) :            num //= 2;         # While num is divisible by 3,        # divide it by 3        while (num % 3 == 0) :            num //= 3         # If num got reduced to 1 then it has        # only 2 and 3 as prime factors        if (num == 1) :            count += 1     return count # Driver codeif __name__ == "__main__" :     l = 1    r = 10         print(findTwoThreePrime(l, r))     # This code is contributed by Ryuga
// C# program to count the numbers// within a range whose prime factors// are only 2 and 3using System; class GFG{         // Function to count the number// within a range whose prime// factors are only 2 and 3static int findTwoThreePrime(int l, int r){    // Start with 2 so that 1    // doesn't get counted    if (l == 1)        l++;     int count = 0;     for (int i = l; i <= r; i++)    {        int num = i;         // While num is divisible by 2,        // divide it by 2        while (num % 2 == 0)            num /= 2;         // While num is divisible by 3,        // divide it by 3        while (num % 3 == 0)            num /= 3;         // If num got reduced to 1 then it         // has only 2 and 3 as prime factors        if (num == 1)            count++;    }    return count;} // Driver codestatic public void Main (){    int l = 1, r = 10;    Console.WriteLine(findTwoThreePrime(l, r));}} // This code is contributed by akt_mit
<?php// PHP program to count the numbers// within a range whose prime factors// are only 2 and 3 // Function to count the number// within a range whose prime// factors are only 2 and 3function findTwoThreePrime($l, $r){    // Start with 2 so that 1    // doesn't get counted    if ($l == 1)        $l++;     $count = 0;     for ($i = $l; $i <= $r; $i++)    {        $num = $i;         // While num is divisible by 2,        // divide it by 2        while ($num % 2 == 0)            $num /= 2;         // While num is divisible by 3,        // divide it by 3        while ($num % 3 == 0)            $num /= 3;         // If num got reduced to 1 then it has        // only 2 and 3 as prime factors        if ($num == 1)            $count++;    }    return $count;} // Driver code$l = 1;$r = 10;echo findTwoThreePrime($l, $r);     // This code is contributed by ajit?>
<script>     // Javascript program to count the numbers    // within a range whose prime factors    // are only 2 and 3         // Function to count the number    // within a range whose prime    // factors are only 2 and 3    function findTwoThreePrime(l, r)    {        // Start with 2 so that 1        // doesn't get counted        if (l == 1)            l++;         let count = 0;         for (let i = l; i <= r; i++)        {            let num = i;             // While num is divisible by 2,            // divide it by 2            while (num % 2 == 0)                num = parseInt(num / 2, 10);             // While num is divisible by 3,            // divide it by 3            while (num % 3 == 0)                num = parseInt(num / 3, 10);             // If num got reduced to 1 then it             // has only 2 and 3 as prime factors            if (num == 1)                count++;        }        return count;    }         let l = 1, r = 10;    document.write(findTwoThreePrime(l, r));     </script>
Time Complexity: O((r-l)*log2(r-l))
Auxiliary Space: O(1)
jit_t
ankthon
mukesh07
rohitkumarsinghcna
prime-factor
C++ Programs
Competitive Programming
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
C++ Program for QuickSort
cin in C++
delete keyword in C++
CSV file management using C++
Shallow Copy and Deep Copy in C++
Competitive Programming - A Complete Guide
Practice for cracking any coding interview
Arrow operator -> in C/C++ with Examples
Top 10 Algorithms and Data Structures for Competitive Programming
Bits manipulation (Important tactics)