📌  相关文章
📜  n在由2、3、5和7构成的数字中的位置

📅  最后修改于: 2021-04-23 16:51:53             🧑  作者: Mango

考虑仅由数字2、3、5、7(质数)组成的一系列数字。该系列中的前几个数字是2、3、5、7、22、23、25、27、32、33、35、37、52、53、55、57等。给定一个由2、3构成的数字,5、7位数字,我们需要找到该数字在本系列中的位置。
例子:

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

Input : 777
Output : 84

它与以下文章相反:
仅查找由质数(2、3、5和7)组成的第n个数字

""
             /                           |                            |                            \
          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)
/||\  /||\ /||\ /||\        /||\  /||\   /||\  /||\     /||\   /||\   /||\   /||\      /||\   /||\   /||\   /||\

如果数字为2,则它位于位置pos * 2 + 1
如果数字为3,则它位于位置pos * 2 + 2
如果数字为5,则它位于位置pos * 2 + 3
如果数字为7,则它位于位置pos * 2 + 4
pos是一个大于或等于0的整数。

C++
#include 
#include 
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);
}


Java
// 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


Python 3
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.


C#
// 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


PHP


Javascript


输出:
84