首页 > 其他 > 详细

1.13.11

时间:2017-01-12 11:27:04      阅读:164      评论:0      收藏:0      [点我收藏+]

11:回文素数

描述一个数如果从左往右读和从右往左读数字是相同的,则称这个数是回文数,如121,1221,15651都是回文数。给定位数n,找出所有既是回文数又是素数的n位十进制数。(注:不考虑超过整型数范围的情况)。输入位数n,其中1<=n<=9。输出第一行输出满足条件的素数个数。
第二行按照从小到大的顺序输出所有满足条件的素数,两个数之间用一个空格区分。样例输入

1

样例输出

4
2 3 5 7
算的比较巧,肯定有其它更加直接的方法
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 char a[13];
 4 int b[7000],n1,top;
 5 bool ss(int n)
 6 {
 7     if(n==1||n==0) return 0;
 8     if(n==2) return 1;
 9     for(int i=2;i<=sqrt(n);i++)
10      if(n%i==0) return 0;
11     return 1;
12 }
13 void f(int n)
14 {
15     if(!n) 
16     {    
17     if(ss(atoi(a))) b[top++]=atoi(a);
18     return;
19     }
20     int i,s=0;
21     if(n==n1) s=1;
22     for(i=s;i<=9;i++)
23     {
24         
25         a[n1-n]=i+0;
26         a[n-1]=i+0;
27         f(n-1);
28     }
29     return;
30 }
31 int main()
32 {
33     int k,m;
34     scanf("%d",&k);
35     n1=k;
36     if(k%2==0) m=k/2; else m=k/2+1;
37     f(m);
38     sort(b,b+top);
39     printf("%d",top);
40     if(top) printf("\n");
41     for(int i=0;i<top;i++)
42         printf("%d ",b[i]);
43     return 0;
44 }

 

1.13.11

原文:http://www.cnblogs.com/zby-ccsygz/p/6275120.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!