向每个素数右边加一个数,然后判断是否仍是素数,直到长度为n.
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("sprime.in");
ofstream fout("sprime.out");
#ifdef _DEBUG
#define out cout
#define in cin
#else
#define out fout
#define in fin
#endif
int n;
// num>=2
bool is_prime(int num)
{
for(int i=2;i*i<=num;++i){
if(num%i==0)
return false;
}
return true;
}
void dfs(int num,int depth)
{
if( is_prime(num) ){
if(depth==n){
out<<num<<endl;
}else{
for(int i=1;i<10;++i){
dfs(num*10+i,depth+1);
}
}
}
}
void solve()
{
in>>n;
dfs(2,1);
dfs(3,1);
dfs(5,1);
dfs(7,1);
}
int main(int argc,char *argv[])
{
solve();
return 0;
}