hdu1431 2138 素数筛法的应用
2013-03-21 15:24
176 查看
hdu 2138 How many prime numbers
/* 2013-03-21 15:10:20 Accepted 2138 15MS 544K 1338 B 筛法就是预先打表处理 任何一个非素数必能转换成若干素数之积 本题根据以上定理给出10以内的素数,然后打一个素数表, 再根据定理求给定的数是否为素数 */ #include <iostream> #include <stdio.h> #include <string.h> #include <math.h> using namespace std; //最大值一定要够大,因为不够大,出现了两次除数为零的错误,囧 const long long maxn=7*1e4; int prim[maxn]; //素数打表 void do_prim() { memset(prim,0,sizeof(prim)); //存入10以内的素数 prim[0]=2; prim[1]=3; prim[2]=5; prim[3]=7; int m=4; for(long long i=11;i<maxn;i++) { long long k=sqrt((double )i)+1; int flag=1; for(int j=0;prim[j]<k;j++) { if(i%prim[j]==0) { flag=0; break; } } if(flag) { prim[m++]=i; } } } int main() { int n; do_prim(); while(scanf("%d",&n)!=EOF) { int a; int ans=0; while(n--) { int flag=1; scanf("%d",&a); if(a==0||a==1)continue; int c=sqrt((double)a)+1; for(int i=0;prim[i]<c;i++) { if(a%prim[i]==0) { flag=0; break; } } if(flag) ans++; } printf("%d\n",ans); } return 0; }
hdu1431 素数回文
/* 2013-03-21 14:17:11 Accepted 1431 453MS 10044K 1533 B 写于13年3月21日 练习素数筛法 百度后知道最大的素数回文是9989899,不到10000000 后面的一个0只是摆设 之后打表确实如此,这也为以后做题给了一个提示: 即数据范围过大时,可先打表观察一下预处理 */ #include <iostream> #include <stdio.h> #include <string.h> using namespace std; const int maxn=10000010; bool prim[maxn]; char str[15]; void is_prim() { memset(prim,1,sizeof(prim)); prim[0]=prim[1]=0; //循环只需进行到sqrt(maxn)就可以了 for(int i=2;i<3163;i++) { if(prim[i]) { //小与i*i的数据已经在k*i(k<i)时处理过了,不需重复处理 for(int j=i*i;j<maxn;j+=i) { prim[j]=0; } } } } void huiwei() { is_prim(); for(int i=2;i<maxn;i++) { if(prim[i]) { sprintf(str,"%d",i);//将实数i以字符串的形式输入str int len=strlen(str)-1; for(int j=0;j<(len+1)/2;j++) { if(str[j]!=str[len-j]) { prim[i]=0; break; } } } } /* //打表观察素数回文的范围 for(int i=2;i<maxn;i++) if(prim[i]) printf("%d\n",i); */ } int main() { int a,b; huiwei(); while(scanf("%d%d",&a,&b)!=EOF) { for(int i=a;i<maxn&&i<=b;i++) { if(prim[i]) printf("%d\n",i); } printf("\n"); } return 0; }
相关文章推荐
- HDU-#1239、2136、2138 HDU素数筛法系列
- 三步创建Disruptor应用
- HTML5/jQuery动画应用 3D视觉效果
- 多线程应用——(四)
- Android首次进入应用时加载引导界面
- Laravel 5.1 事件、事件监听的简单应用
- hashset的应用及注意事项,以及案例分析和详细注释
- 使用Yeoman搭建 AngularJS 应用 (11) —— 让我们搭建一个网页应用
- KNN算法在保险业精准营销中的应用
- Android启动其他应用(支持跳转应用市场下载)
- 事实证明,应用市场是个流量的生意(产品能力并不足以形成护城河)
- Android N 多窗口模式应用开发
- 顺序表应用6:有序顺序表查询
- React Native应用部署/热更新-CodePush最新集成总结(新)
- Spring框架之Filter应用
- Kotlin 为何能成为 Android 官方支持开发语言及Kotlin开发Android应用初体验
- iOS应用管理(字典转模型)
- 导向滤波小结:从导向滤波(guided filter)到快速导向滤波(fast guide filter)的原理,应用及opencv实现代码
- 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用
- 浅谈原始套接字 SOCK_RAW 的内幕及其应用(port scan, packet sniffer, syn flood, icmp flood)