超级素数。如何使用n个数字生成数字?

时间:2018-05-02 20:50:09

标签: c++ recursion primes

最近我已经开始自己学习编程了,我想出了这个我正在努力解决的问题。作为输入,我有一个整数 N ,可以是2到9之间的任何值。 N - 是我的最终超级素数中的位数。根据这个问题,超级素数是当我删除最后一个数字时,它本身也是素数,余数必须是素数等等,直到我只剩下一个数字。我必须打印所有超级素数,包含N个数字。问题是我不知道如何生成一个具有N个数字的数字 这就是它应该是:

Input:
7
Output:
2339933 
2399333 
2939999 
3733799 
5939333 
7393913 
7393931 
7393933

我得到的是23和29重复多次。 如果有人可以帮助我,我将非常感激。

void makeNumber(int &num, int&di, int&num1 )
{
    num1=num*10+di;
}
void generatedigit (int &n, int &num, int middle[], int&di, int&num1, int &endlen)
{
for(int j=endlen; j<n;j++){
    for(int i=0;i<4;i++)
    {
        di=middle[i];
        makeNumber(num, di,num1);
        if(!isPrime(num1))  {endlen++; generatedigit(n,num,middle,di,num1,endlen); cout<<num1<<endl;}
    }
    }
}

int main(){
  int n,di;
   cin>>n;
   int num,num1,endlen;
   endlen=1;
   int firstnum[4]={2,3,5,7};
   int middle[4]={1,3,7,9};
   for(int i=0;i<4;i++)
   {
       num=firstnum[i];
       generatedigit(n,num,middle,di,num1,endlen);}

   }

0 个答案:

没有答案