Position of n among the numbers made of 2, 3, 5 & 7

Consider a series of numbers composed of only digits 2, 3, 5, 7 (primes). First few numbers in the series are 2, 3, 5, 7, 22, 23, 25, 27, 32, 33, 35, 37, 52, 53, 55, 57 .. etc. Given a number constructed by 2, 3, 5, 7 digit only, we need to find position of this number in this series.

Examples:

Input : 22
Output : 5
22 is 5th number in series 2, 3, 5, 7, 22, ...

Input : 777
Output : 84

It is reverse of the following article :

Finding n-th number made of prime digits (2, 3, 5 and 7) only

                                                    ""
             /                           |                            |                            \
          1(2)                          2(3)                         3(5)                          4(7)
   /    |     |   \           /   |      |  \             /     |       |    \           /     |     |     \ 
5(22) 6(23) 7(25) 8(27)    9(32)10(33)11(35)12(37)    13(52) 14(53) 15(55) 16(57)    17(72) 18(73) 19(75) 20(77)
/||\  /||\ /||\ /||\        /||\  /||\   /||\  /||\     /||\   /||\   /||\   /||\      /||\   /||\   /||\   /||\

If number is 2 then it is on the position pos*2+1
If number is 3 then it is on the position pos*2+2
If number is 5 then it is on the position pos*2+3
If number is 7 then it is on the position pos*2+4

Here pos is an integer greater than or equal to 0.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <algorithm>
#include <iostream>
using namespace std;
  
int findpos(string n)
{
    int pos = 0;
    for (int i = 0; n[i] != '\0'; i++) {
        switch (n[i]) {
  
        // If number is 2 then it is
        // on the position pos*2+1
        case '2':
            pos = pos * 4 + 1;
            break;
  
        // If number is 3 then it is
        // on the position pos*2+2
        case '3':
            pos = pos * 4 + 2;
            break;
  
        // If number is 5 then it is
        // on the position pos*2+3
        case '5':
            pos = pos * 4 + 3;
            break;
  
        // If number is 7 then it is
        // on the position pos*2+4
        case '7':
            pos = pos * 4 + 4;
            break;
        }
    }
    return pos;
}
  
// Driver code
int main()
{
    string n = "777";
    cout << findpos(n);
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java Program position of n among
// the numbers made of 2, 3, 5 & 7
class GFG
{
static int findpos(String n) 
    int pos = 0
    for (int i = 0; i < n.length(); i++)
    
        switch (n.charAt(i)) 
        
  
        // If number is 2 then it is 
        // on the position pos*2+1 
        case '2'
            pos = pos * 4 + 1
            break
  
        // If number is 3 then it is 
        // on the position pos*2+2 
        case '3'
            pos = pos * 4 + 2
            break
  
        // If number is 5 then it is 
        // on the position pos*2+3 
        case '5'
            pos = pos * 4 + 3
            break
  
        // If number is 7 then it is 
        // on the position pos*2+4 
        case '7'
            pos = pos * 4 + 4
            break
        
    
    return pos; 
  
// Driver code 
public static void main(String args[])
    String n = "777"
    System.out.println( findpos(n)); 
}
  
// This code is contributed 
// by Arnab Kundu

chevron_right


Python 3

filter_none

edit
close

play_arrow

link
brightness_4
code

def findpos(n):
    pos = 0
    for i in n:
          
        # If number is 2 then it is
        # on the position pos*2+1
        if i == '2':
            pos = pos * 4 + 1
              
        # If number is 3 then it is
        # on the position pos*2+2
        elif i == '3':
            pos = pos * 4 + 2
              
        # If number is 5 then it is
        # on the position pos*2+3
        elif i == '5':
            pos = pos * 4 + 3
              
        # If number is 7 then it is
        # on the position pos*2+4
        elif i == '7':
            pos = pos * 4 + 4
          
    return pos
  
# Driver code
n = "777"
print (findpos(n))
  
# This code is contributed by vishal.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# Program position of n among
// the numbers made of 2, 3, 5 & 7
using System;
      
class GFG
{
      
static int findpos(String n) 
    int pos = 0; 
    for (int i = 0; i < n.Length; i++)
    
        switch (n[i]) 
        
  
        // If number is 2 then it is 
        // on the position pos*2+1 
        case '2'
            pos = pos * 4 + 1; 
            break
  
        // If number is 3 then it is 
        // on the position pos*2+2 
        case '3'
            pos = pos * 4 + 2; 
            break
  
        // If number is 5 then it is 
        // on the position pos*2+3 
        case '5'
            pos = pos * 4 + 3; 
            break
  
        // If number is 7 then it is 
        // on the position pos*2+4 
        case '7'
            pos = pos * 4 + 4; 
            break
        
    
    return pos; 
  
// Driver code 
public static void Main(String[] args)
    String n = "777"
    Console.WriteLine( findpos(n)); 
}
  
// This code contributed by Rajput-Ji

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP Program position of n among
// the numbers made of 2, 3, 5 & 7
  
function findpos($n)
{
    $pos = 0;
    for ($i = 0; isset($n[$i]) != NULL; $i++)
    {
        switch ($n[$i]) 
        {
  
            // If number is 2 then it is
            // on the position pos*2+1
            case '2':
                $pos = $pos * 4 + 1;
                break;
      
            // If number is 3 then it is
            // on the position pos*2+2
            case '3':
                $pos = $pos * 4 + 2;
                break;
      
            // If number is 5 then it is
            // on the position pos*2+3
            case '5':
                $pos = $pos * 4 + 3;
                break;
      
            // If number is 7 then it is
            // on the position pos*2+4
            case '7':
                $pos = $pos * 4 + 4;
                break;
        }
    }
    return $pos;
}
  
// Driver Code
$n = "777";
echo findpos($n);
  
// This code is contributed by nitin mittal.
?>

chevron_right


Output:

84


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.