Супер простые числа. Как сгенерировать число с ровным количеством цифр? - PullRequest
0 голосов
/ 02 мая 2018

Недавно я начал самостоятельно изучать программирование и столкнулся с проблемой, с которой я борюсь. В качестве входных данных у меня есть целое число 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);}

   }
...