快速查找素数

时间限制:1000 ms  |  内存限制:65535 KB
难度:3

描述
现在给你一个正整数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
来源
经典题
上传者
路过这

同一道题,虽然用同一种方法,但是,效率还是有差别的....

试除法。。。(1)

也是我们最常用的。。。来打表(素数表)

代码:

#include<stdio.h>
#define maxn 150000
int arr[maxn]={2,3,5,7,11};
int main()
{int n,i,j,k=5;for(i=13;i<=1999993;i++){for(j=2;j*j<=i;j++){if(i%j==0)  break;}if(j*j>i) arr[k++]=i;}while(scanf("%d",&n),n){for(i=0;arr[i]<=n&&arr[i]!=0;i++){if(i==0)printf("%d",arr[i]);elseprintf(" %d",arr[i]);}printf("\n");}return 0;
}      

效率不是非常的高.....

有一种比较快的方法,打表。

模板为:

int prime[200000];
bool bo[10000001];int  prime_table()
{
int i,j,flag=0;
memset(bo,0,sizeof bo);
bo[0]=bo[1]=1;
for(i=2;i<=1000;i++)
{
if(!bo[i])
{
for(j=i*i;j<=len;j+=i)
bo[j]=1;
}
}
for(i=0;i<=len;i++)
if(!bo[i])
prime[flag++]=i;
return flag //在该范围内的个数....
}

代码:

#include<stdio.h>
#define maxn 150000
#define len 1999993
int prime[maxn];              //存储素数
bool isprime[len+1]={1,1};   //用来判断是否为素数,1代表不是,0代表是
void prime_table()
{int i,j,flag=0;for(i=2;i*i<=len;i++)        //对于在给定的范围内,就是打表的范围内
  {if(!isprime[i])         {for(j=i*i;j<=len;j+=i)isprime[j]=1;}}for(i=0;i<=len;i++)if(!isprime[i])prime[flag++]=i;}
int main()
{int n,i;prime_table();while(scanf("%d",&n),n){printf("%d",prime[0]);      for(i=1;prime[i]<=n&&prime[i]!=0;i++)printf(" %d",prime[i]);printf("\n");}return 0;
}      

转载于:https://www.cnblogs.com/gongxijun/p/3248621.html

nyoj---快速查找素数相关推荐

  1. 埃拉托斯特尼筛法 快速查找素数

    埃拉托斯特尼筛法 快速查找素数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数. 输入 给出一个 ...

  2. nyoj187 快速查找素数

    快速查找素数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数. 输入 给出一个正整数数N(N&l ...

  3. NYOJ 187 快速查找素数

    原题链接 打表. 附ac代码: #include <stdio.h> #include <math.h> #define MAX 2000000 + 2 int a[MAX] ...

  4. 快速查找计算9百万万亿整数内全部素数(质数)的C++代码

    用素数筛查找小于等于某个给定整数的全部素数,是一种较为高效的方法,具体的原理网上很多,这里就不赘述了. 但即使都是运用的素数筛原理,不同的算法设计,也可以带来巨大的效率差异.最近从网上搜索学习了相关的 ...

  5. VB快速查找大型文件中包含的字符串

    关于查找大型文件中包含的字符串,一般都把文件内容读入到内存,然后在内存里进行比较,却不知这种办法有一个致命的弱点,那就是由于大量的内存申请和释放导致的内存颠簸,会使系统性能下降,严重影响了查找的速度. ...

  6. 关于快速寻找素数的方法

    利用素数筛选法进行素数的快速查找. 原理很简单,素数一定是奇数,素数的倍数一定不是素数. 思路如下: 预定义N表示10000,即表示查找10000以内的素数,首先定义数组prime[]对N以内的数进行 ...

  7. Rabin-Karp 算法(字符串快速查找)

    Rabin-Karp 算法(字符串快速查找) 算法 代码 算法 Go 语言的 strings 包(strings.go)中用到了 Rabin-Karp 算法.Rabin-Karp 算法是基于这样的思路 ...

  8. java快速查找算法_Java实现的快速查找算法示例

    本文实例讲述了Java实现的快速查找算法.分享给大家供大家参考,具体如下: 快速查找算法,可以根据想要找的是第几个大的数,每次循环都能固定下来一个数在数组完整排完序之后的位置,每次循环都能定一个数的位 ...

  9. python使用heapq快速查找最大或最小的 N 个元素

    python使用heapq快速查找最大或最小的 N 个元素 heapq实现了一个适合与Python的列表一起使用的最小堆排序算法. 堆是非线性的树形的数据结构,有两种堆,最大堆与最小堆.( heapq ...

  10. Kali渗透测试——快速查找Metasploit的模块

    快速查找Metasploit的模块 在渗透测试过程中,通过NMAP可以获取目标主机服务和操作系统信息:通过Nessus和OpenVAS可以获取目标主机存在的漏洞:或者,通过其他工具获取到关键信息.这时 ...

最新文章

  1. linux diff 补丁文件夹,LINUX下制作补丁文件 diff,patch
  2. Java这个高级特性,很多人还没用过!
  3. Linux之mount命令详解
  4. 如何显示服务器控件,Panel Web 服务器控件概述
  5. String Primitive和String Object
  6. java 判断是否整数倍_java怎样实现判断一个最高达1000位数字的整数是不是3的倍数。...
  7. 武汉涉密信息系统集成资质介绍
  8. Download Software Top 10
  9. 没有U盘纯硬盘安装linux之Ubuntu22.04
  10. 伍斯特理工学院计算机,世界排名领先,伍斯特理工学院到底有多厉害?
  11. Labview筛选符合条件的数据
  12. 抢先入驻皮皮虾APP社区 红利初期第一批操作者绝对有肉吃
  13. 高并发场景以及应对技巧
  14. WH-1000XM3蓝牙连接笔记本电脑
  15. Unity中模型的面数问题
  16. 隐私政策说明 - 掌上软考答题速记系统
  17. 生活记录:记录2020暑假前半部分时光
  18. java 获取今天或者某一天是星期几/周几以及几号的方法
  19. 浅谈Selenium之WebUI自动化
  20. 安卓手机通过OTG转接头连接U盘(USB口)相关问题解决

热门文章

  1. 归并排序的时间复杂度
  2. kafka性能优化入门
  3. mr InputFormat类
  4. 推荐一个免费绘制软件架构图的网站
  5. 一步一步搭建vue项目
  6. H3 BPM MVC表单SheetAttachment控件使用NTKO打开附件(Word、Excel)
  7. EXCEL 2010学习笔记—— 动态图表
  8. 菜鸟赛季之------第221天...
  9. Directed Minimum Spanning Tree: Chu-Liu/Edmonds Algorithm
  10. EMC NetWorker简单管理指南(二)