PAT-乙级-1013
2016-12-29 08:39
204 查看
1013. 数素数 (20)
令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。输入格式:
输入在一行中给出M和N,其间以空格分隔。
输出格式:
输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。
输入样例:
5 27
输出样例:
11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103
【解析】 这道题我觉得还是有必要写一下的,就是怎么判断某个范围内的素数,这显然有快速的算法,我之前算素数的算法超时以后其实可以拿这个算比较简单了。就是看前面的素数是 不是后面素数的因子。肯定要判断2既然后面的如果取余2为0那吗说明是偶数如果不是那就看他能不能取余前面的素数如果可以说明他不是素数
#include <iostream> #include<cstdio> using namespace std; int main() { int *pre = new int[11000];//申请一块空间 int n,m,k=0,i,j; scanf("%d%d",&n,&m); pre[k++] = 2; for (i = 3; i <=120000; i++) { for (j = 0; j*j < k; j++) { if (i%pre[j] == 0)break;//这里的话表示如果i能被在k开根号以前的素数整除的话,那就不是素数,否则就是素数 //这里之所以是j的条件是j*j<k其实这是个优化可以少进行几次。是个求素数的好方法 } if (j*j>=k) { pre[k++] = i; } } int count= 0; for (i =n-1;i<m;i++) { count++; if (count%10 == 0) { cout<<pre[i]<<endl;//输出10个要换行 continue; } if (i ==m-1) { cout<<pre[i]<<endl; break; } cout <<pre[i]<<" "; } return 0; }
相关文章推荐
- vsftpd虚拟用户目录及权限分离
- php实现水印文字和缩略图的方法示例
- mysql-5.7.9安装
- NFS服务配置
- 为Unity编写C++ Native Plugin
- myrocks复制中断问题排查
- java并行计算Fork和Join的使用
- Weex开发之路(1):开发环境搭建
- 用mapreduce计算wordCount和手机流量统计程序运行过程
- recycleView 滑动删除Item,拖拽切换Item,你想了解的都在这儿
- 详解javascript表单的Ajax提交插件的使用
- 1001害死人不偿命的(3n+1)猜想
- 充实的一天
- HTTPS 指南
- MySQL存储引擎中的MyISAM和InnoDB区别详解
- 关于autocomplete的小例子
- 基于javascript的Form表单验证
- 带你开发一款给Apk中自动注入代码工具icodetools(完善篇)
- 部署tensorflow后导入出现如下错误解决办法
- Action获取参数