发现老天爷还是很照顾我的,知道我是重操旧业,比较手生,接连三天来都是水题,使我心情愉悦,不过水题还是有小技巧的: 为保证每加上一个数字,所得数字都是素数,所以加上的数字只能是1,3,7,9,而第一个数字只能是2,3,5,7,所以代码如下: /* ID: xincaor1 PROG: sprime LANG: C++ */ #include <iostream> #include <cstdio> #include <cmath> using namespace std; int n; int p[5]={1,3,7,9}; bool isPrime(int x) { if(x==1) return 0; if(x==2) return 1; int d=(int)sqrt(x); for(int i=2;i<=d;i++) { if(x%i==0) return 0; } return 1; } void dfs(int x,int l) { if(l==n) { cout<<x<<endl; return ; } for(int i=0;i<4;i++) { int t; t=x*10+p[i]; if(isPrime(t)) dfs(t,l+1); } } int main() { freopen("sprime.in","r",stdin); freopen("sprime.out","w",stdout); cin>>n; dfs(2,1); dfs(3,1); dfs(5,1); dfs(7,1); return 0; }