NYOJ 187
快速查找素数
- 描述
- 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数。
- 输入
- 给出一个正整数数N(N<=2000000)
但N为0时结束程序。
测试数据不超过100组 - 输出
- 将2~N范围内所有的素数输出。两个数之间用空格隔开
- 样例输入
-
5
10
11
0 - 样例输出
-
2 3 5
2 3 5 7
2 3 5 7 11快速查找素数
这道题目考察的是素数的筛法,不过需要注意的点就是如何写筛法.下面的一种是超时的写法: 先用筛法求出规定的大小内的所有的素数,然后用二分法确定要输出的数的个数,但是超时了。#include <iostream>
#include<stdio.h>
#include <cstring>
using namespace std; const int MAXN = ;
bool u[MAXN];
int prime[MAXN], cnt = ;
void primer(){
memset(u, true, sizeof(u));
for(int i=; i<MAXN; ++i){
if(u[i]) prime[cnt++] = i;
for(int j=; j<cnt && i*prime[j]<MAXN; ++j){
u[i*prime[j]] = false;
if( == i%prime[j]) break;
}
}
}
//
int getnum(int n){
int left = ,right = cnt-;
int middle=(left+right)/ ;
while(prime[middle]!=n&&right>=left ){
if(n<prime[middle]) right = middle-;
else left= middle+;
middle = (left+right)/;
}
return middle;
} int main(){
int n; primer();
while(){
scanf("%d",&n);
if(n==) break;
for(int i=;i<getnum(n )+;i++ ){
printf("%d ",prime[i] ) ;
}
printf("\n");
}
return ;
}下面曝一种其他同学的写法:也是筛法,但是比较单一,比较简单,但是却能AC。
#include<stdio.h> int main(){
int n,i,s,j;
bool a[]={};
a[]=;a[]=; //并没有考虑可能重复筛选的数字
for(i=;i<;i++){
if(a[i]==){
for(j=i+i;j<=;j=j+i)
a[j]=;
}
} while(scanf("%d",&n)!=EOF&&n!=){
s=;
for(i=;i<=n;i++){
if(a[i]==){
s++;
if(s==) printf("%d",i);
if(s>) printf(" %d",i);
}
}
printf("\n");
}
return ;
}
NYOJ 187的更多相关文章
- NYOJ 1007
在博客NYOJ 998 中已经写过计算欧拉函数的三种方法,这里不再赘述. 本题也是对欧拉函数的应用的考查,不过考查了另外一个数论基本定理:如何用欧拉函数求小于n且与n互质所有的正整数的和. 记eule ...
- NYOJ 998
这道题是欧拉函数的使用,这里简要介绍下欧拉函数. 欧拉函数定义为:对于正整数n,欧拉函数是指不超过n且与n互质的正整数的个数. 欧拉函数的性质:1.设n = p1a1p2a2p3a3p4a4...pk ...
- NYOJ 333
http://www.cppblog.com/RyanWang/archive/2009/07/19/90512.aspx?opt=admin 欧拉函数 E(x)表示比x小的且与x互质的正整数的个数. ...
- NYOJ 99单词拼接(有向图的欧拉(回)路)
/* NYOJ 99单词拼接: 思路:欧拉回路或者欧拉路的搜索! 注意:是有向图的!不要当成无向图,否则在在搜索之前的判断中因为判断有无导致不必要的搜索,以致TLE! 有向图的欧拉路:abs(In[i ...
- nyoj 10 skiing 搜索+动归
整整两天了,都打不开网页,是不是我提交的次数太多了? nyoj 10: #include<stdio.h> #include<string.h> ][],b[][]; int ...
- 简答哈希实现 (nyoj 138 找球号2)
例题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=138 代码目的:复习哈希用 代码实现: #include "stdio.h&qu ...
- nyoj 284 坦克大战 简单搜索
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=284 题意:在一个给定图中,铁墙,河流不可走,砖墙走的话,多花费时间1,问从起点到终点至少 ...
- nyoj 170 网络的可靠性
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=170 思路:统计每个节点的度,将度为1的节点消去所需要的最少的边即为答案. 代码: #in ...
- nyoj 139 我排第几个--康拓展开
我排第几个 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说 ...
随机推荐
- poj1789--最小生成树(prim)
水题... 题目大意: 用一个7位的字符串代表一个编号,两个编号之间的distance代表这两个编号之间不同字母的个数.一个编号只能由另一个编号“衍生”出来,代价是这两个编号之间相应的distance ...
- php xml 文件读取 XMLReader
php xml 文件读取 <?php /** $xmlString = '<xml> <persons count="10"> <person ...
- PHP运算符
运算符 PHP运算符可以根据操作数的个数分为一元运算符.二元运算符.三元运算符.一元运算符例如!(取反运算符)或++(加一运算符),PHP支持的大多数运算符都是这种二元运算符,例如+.-.*./等算数 ...
- SpringMVC解决乱码
SpringMVC解决乱码 在web.xml中配置如下代码
- js 数组去重(7种)
第一次写技术博客,之前总是认为写这些会很浪费时间,还不如多看几篇技术博文.但...但昨天不知道受了什么刺激,好像有什么在驱使着自己要写一样,所以才有了今天的第一篇博文.总觉得应该要坚持这样写下去.初次 ...
- 【转载】实用的Javascript获取网页屏幕可见区域高度
本文转载原地址:这里 document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 docu ...
- arcgis for flex展示GIS基本功能
1.地图框选搜索: 这是空间查询,在地图上框选一定的范围,然后搜索出在这个范围之内的所有信息,搜索到的详细信息在列表框显示出来 2.属性查询: 3.数据库展示: 4.绘制图形: 地图上绘制各种不同形状 ...
- Quartz2D简介
Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作:
- 利用layer的mask属性实现逐渐揭示的动画效果
github上又看到个不错的动画(https://github.com/rounak/RJImageLoader),如图: 所以就想来自己实现以下 不试不知道,这个动画还真不是看上去那么简单,我自己想 ...
- iOS - 详细理解KVC与KVO
详细理解KVC与KVO 在面试的时候,KVC与KVO有些时候还是会问到的,并且他们都是Objective C的关键概念,在这里我们先做一个简单地介绍: (一)KVC: KVC即指:NSKeyValue ...