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