特殊的质数肋骨
时间限制: 0 Sec 内存限制: 128 MB题目描述
农民约翰的母牛总是生产出最好的肋骨。你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们。 农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组成一个质数,举例来说: 7 3 3 1 全部肋骨上的数字 7331是质数;三根肋骨 733是质数;二根肋骨 73 是质数;当然,最后一根肋骨 7 也是质数。 7331 被叫做长度 4 的特殊质数。 写一个程序对给定的肋骨的数目 N (1< =N< =8),求出所有的特殊质数。数字1不被看作一个质数。
输入
单独的一行包含N。
输出
按顺序输出长度为 N 的特殊质数,每行一个。 并按大小顺序排列(从小到大).
样例输入
4
样例输出
2333
2339
2393
2399
2939
3119
3137
3733
3739
3793
3797
5939
7193
7331
7333
7393
AC
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #include <cmath> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 int n; 7 bool pd(int x)//判断质数 8 { 9 if (x==1) 10 return false; 11 for (int i=2;pow(i,2)<=x;i++) 12 if (x%i==0) 13 return false; 14 return true; 15 } 16 void dfs(int dep,int fa)//找质数情况下的特殊骨头 17 { 18 for (int i=1;i<=9;i++) 19 if (pd(fa*10+i)) 20 { 21 if (dep==n) 22 printf("%d\n",fa*10+i); 23 else 24 dfs(dep+1,fa*10+i); 25 } 26 } 27 int main() 28 { 29 scanf("%d",&n); 30 dfs(1,0); 31 return 0; 32 }