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个字符,将其所有的排列中按字典序排列,给出任意一种排列,说 ...
随机推荐
- 【C#】 异常处理
异常是在程序执行期间出现的问题.C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零等异情况. 异常提供了一种把程序控制权从某个部分转移到另一个部分的方式. C# 异常处理时建立在四个 ...
- PHP JSON数组与对象的理解
在PHP后端和客户端数据交互的过程中,JSON数据中有时格式不定,一会儿是数组,一会儿是对象,弄得客户端开发人员要崩溃的感觉. 因此,前后端相关人员先对PHP的json_encode函数原理有必要的了 ...
- [译]Godot系列教程三 - 场景实例化(续)
场景实例化(续) 要点 场景实例化带来很多便利的用法,总体来说有: 将场景细分,更便于管理 相对于某些引擎中的Prefab组件更灵活,并且在许多方面更强大 是一种设计更复杂的游戏流程甚至UI的方式 这 ...
- php中return的用法实例分析
本文实例讲述了php中return的用法.分享给大家供大家参考.具体分析如下: 首先,它的意思就是返回;return()是语言结构而不是函数,仅在参数包含表达式时才需要用括号将其括起来.当返回一个变量 ...
- [转载]C#中as和is关键字的用法
这篇文章主要介绍了C#中as和is关键字的用法的相关资料,需要的朋友可以参考下. 原文链接:http://www.jb51.net/article/80944.htm#comments 在程序中,进 ...
- js监听input是第几次click
我很多问题啊 真的是,然后我有问题就博问啊 ,博问的东西我还是放到博客里面来吧 因为我不怎么看博问 博客的话经常看, 恩 都是一开始我不懂 然后园友来解答的 真的很感谢这些园友 不多说 上代码吧 其实 ...
- 本地部署arcgis by eclipse
首次来博客园发帖,从本地部署arcgis api开始吧: 首先还是下载arcgis的api包开始,在中国区官网下载arcgis包: 1.http://support.esrichina.com.cn/ ...
- windows下React-native 环境搭建
公司决定试水react-native,mac审批还没下来,没办法,先用windows硬着头皮上吧. 参考文章: React Native 中文网官方文档 史上最全Windows版本搭建安装React ...
- SharePoint 2013 入门教程之入门手册
当我们搭建完环境,创建应用程序和网站集后,就已经正式开启了我们的SharePoint之旅了,进入网站以后,开始基本的使用.设置,了解SharePoint相关特性,下面,来简单了解下SharePoint ...
- Objective-C 快速入门--基础(五)
1.什么是属性?属性会帮我们做哪些事情?请详细说明. (1)①属性是Objective-C 2.0定义的语法,为实例变量提供了setter.getter方法的默认实现:②能在一定程度上简化程序代码,并 ...