nyoj---快速查找素数
快速查找素数
- 描述
-
现在给你一个正整数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---快速查找素数相关推荐
- 埃拉托斯特尼筛法 快速查找素数
埃拉托斯特尼筛法 快速查找素数 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数. 输入 给出一个 ...
- nyoj187 快速查找素数
快速查找素数 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数. 输入 给出一个正整数数N(N&l ...
- NYOJ 187 快速查找素数
原题链接 打表. 附ac代码: #include <stdio.h> #include <math.h> #define MAX 2000000 + 2 int a[MAX] ...
- 快速查找计算9百万万亿整数内全部素数(质数)的C++代码
用素数筛查找小于等于某个给定整数的全部素数,是一种较为高效的方法,具体的原理网上很多,这里就不赘述了. 但即使都是运用的素数筛原理,不同的算法设计,也可以带来巨大的效率差异.最近从网上搜索学习了相关的 ...
- VB快速查找大型文件中包含的字符串
关于查找大型文件中包含的字符串,一般都把文件内容读入到内存,然后在内存里进行比较,却不知这种办法有一个致命的弱点,那就是由于大量的内存申请和释放导致的内存颠簸,会使系统性能下降,严重影响了查找的速度. ...
- 关于快速寻找素数的方法
利用素数筛选法进行素数的快速查找. 原理很简单,素数一定是奇数,素数的倍数一定不是素数. 思路如下: 预定义N表示10000,即表示查找10000以内的素数,首先定义数组prime[]对N以内的数进行 ...
- Rabin-Karp 算法(字符串快速查找)
Rabin-Karp 算法(字符串快速查找) 算法 代码 算法 Go 语言的 strings 包(strings.go)中用到了 Rabin-Karp 算法.Rabin-Karp 算法是基于这样的思路 ...
- java快速查找算法_Java实现的快速查找算法示例
本文实例讲述了Java实现的快速查找算法.分享给大家供大家参考,具体如下: 快速查找算法,可以根据想要找的是第几个大的数,每次循环都能固定下来一个数在数组完整排完序之后的位置,每次循环都能定一个数的位 ...
- python使用heapq快速查找最大或最小的 N 个元素
python使用heapq快速查找最大或最小的 N 个元素 heapq实现了一个适合与Python的列表一起使用的最小堆排序算法. 堆是非线性的树形的数据结构,有两种堆,最大堆与最小堆.( heapq ...
- Kali渗透测试——快速查找Metasploit的模块
快速查找Metasploit的模块 在渗透测试过程中,通过NMAP可以获取目标主机服务和操作系统信息:通过Nessus和OpenVAS可以获取目标主机存在的漏洞:或者,通过其他工具获取到关键信息.这时 ...
最新文章
- linux diff 补丁文件夹,LINUX下制作补丁文件 diff,patch
- Java这个高级特性,很多人还没用过!
- Linux之mount命令详解
- 如何显示服务器控件,Panel Web 服务器控件概述
- String Primitive和String Object
- java 判断是否整数倍_java怎样实现判断一个最高达1000位数字的整数是不是3的倍数。...
- 武汉涉密信息系统集成资质介绍
- Download Software Top 10
- 没有U盘纯硬盘安装linux之Ubuntu22.04
- 伍斯特理工学院计算机,世界排名领先,伍斯特理工学院到底有多厉害?
- Labview筛选符合条件的数据
- 抢先入驻皮皮虾APP社区 红利初期第一批操作者绝对有肉吃
- 高并发场景以及应对技巧
- WH-1000XM3蓝牙连接笔记本电脑
- Unity中模型的面数问题
- 隐私政策说明 - 掌上软考答题速记系统
- 生活记录:记录2020暑假前半部分时光
- java 获取今天或者某一天是星期几/周几以及几号的方法
- 浅谈Selenium之WebUI自动化
- 安卓手机通过OTG转接头连接U盘(USB口)相关问题解决