DFS
N=1的时候,只有2,3,5,7
N>1的时候,每一位只能是1,3,7,9.所以先求出N=1的素数,再用N=1的素数加上1,3,7,9,符合条件的数形成N=2的素数.
再用N=2的用同样办法求出N=3的,以此类推
/*
ID:xsy97051
LANG:C++
TASK:sprime
*/
#include<iostream>
#include<cstdio>
using namespace std;
int n;
bool gcd(int d)
{
for(int i=2;i*i<=d;i++)
if(d%i==0) return 1;
return 0;
}
void dfs(int s,int k)
{
if(gcd(s)) return;
if(k==n) cout<<s<<endl;
else
for(int i=1;i<=9;i+=2)
dfs(s*10+i,k+1);
}
int main()
{
int a[5];
freopen("sprime.in","r",stdin);
freopen("sprime.out","w",stdout);
cin>>n;
a[1]=2;a[2]=3;a[3]=5;a[4]=7;
for(int i=1;i<=4;i++)
dfs(a[i],1);
return 0;
}