nyoj---快速查找素数
快速查找素数
- 描述
- 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数。
同一道题,虽然用同一种方法,但是,效率还是有差别的....
试除法。。。(1)
也是我们最常用的。。。来打表(素数表)
代码:
#include<stdio.h>
#define maxn 150000
int arr[maxn]={,,,,};
int main()
{
int n,i,j,k=;
for(i=;i<=;i++)
{
for(j=;j*j<=i;j++)
{
if(i%j==) break;
}
if(j*j>i) arr[k++]=i;
} while(scanf("%d",&n),n)
{
for(i=;arr[i]<=n&&arr[i]!=;i++)
{
if(i==)
printf("%d",arr[i]);
else
printf(" %d",arr[i]);
}
printf("\n");
}
return ;
}
效率不是非常的高.....
有一种比较快的方法,打表。
模板为:
int prime[];
bool bo[]; int prime_table()
{
int i,j,flag=;
memset(bo,,sizeof bo);
bo[]=bo[]=;
for(i=;i<=;i++)
{
if(!bo[i])
{
for(j=i*i;j<=len;j+=i)
bo[j]=;
}
}
for(i=;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代表不是,0代表是
void prime_table()
{
int i,j,flag=;
for(i=;i*i<=len;i++) //对于在给定的范围内,就是打表的范围内
{
if(!isprime[i])
{
for(j=i*i;j<=len;j+=i)
isprime[j]=;
}
}
for(i=;i<=len;i++)
if(!isprime[i])
prime[flag++]=i; }
int main()
{
int n,i;
prime_table();
while(scanf("%d",&n),n)
{
printf("%d",prime[]);
for(i=;prime[i]<=n&&prime[i]!=;i++)
printf(" %d",prime[i]); printf("\n");
}
return ;
}
nyoj---快速查找素数的更多相关文章
- 【NYOJ-187】快速查找素数—— 枚举法、筛选法、打表法
快速查找素数 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数. 输入 给出一个正整数数N(N ...
- nyoj_187_快速查找素数_201312042102
快速查找素数 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数. 输入 ...
- Perl快速查找素数
查找N内的所有素数,首先想到的就是: 对整数N从2开始到sqrt(N),进行整除计算,能整除则计算N+1,然后循环.方法简单,但效率低下.1000,000内的素数个数: #!/usr/bin/perl ...
- NYOJ--187--快速查找素数(筛选法,素数打表)
快速查找素数 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数. 输入 给出一个正整数数N ...
- PHP实现文本快速查找 - 二分查找
PHP实现文本快速查找 - 二分查找法 起因 先说说事情的起因,最近在分析数据时经常遇到一种场景,代码需要频繁的读某一张数据库的表,比如根据地区ID获取地区名称.根据网站分类ID获取分类名称.根据关键 ...
- [SQL Server]如何快速查找使用了某个字段的所有存储过程
[SQL Server]如何快速查找使用了某个字段的所有存储过程 当一个系统中使用了很多的表,并且存在大量的存储过程,当数据库中的某个表删除了某个字段,那么相应的存储过程也需要改动,但是我 ...
- lucene如何通过docId快速查找field字段以及最近距离等信息?
http://www.cnblogs.com/LBSer/p/4419052.html 1 问题描述 我们的检索排序服务往往需要结合个性化算法来进行重排序,一般来说分两步:1)进行粗排序,这一过程由检 ...
- Eclipse添加快速查找Dao中方法所对应的Mybatis XML映射SQL的插件
Dao关联Mybatis快速查找的插件安装地址:http://dl.bintray.com/harawata/eclipse 安装步骤: ①Eclipse ==> Help ==> Ins ...
- HDOJ 1397 Goldbach's Conjecture(快速筛选素数法)
Problem Description Goldbach's Conjecture: For any even number n greater than or equal to 4, there e ...
随机推荐
- Linq编程小趣味爱因斯坦谜题
最近看到一个比较老的题目,题目----在一条街上,有5座房子,喷了5种颜色,每个房里住着不同国籍的人,每个人喝不同的饮料,抽不同品牌的香烟,养不同的宠物,问题---谁养鱼? 以前没事还做过这个题,现在 ...
- C#(64位系统) 解决"未能加载文件或程序集,或它的某一个依赖项..."
这个问题通常出在引用第三方DLL或者自己以前写的DLL. 在64位系统下则可能会出现这种问题. 今天下载MySQLDriverCS后引用遍出现了这个问题,参考了一些文档,下面给出解决方法: 将项目的生 ...
- idea 创建 简单的scala maven项目
1.创建maven scala项目 2.maven配置 <properties> <scala.version>2.11.8</scala.version> < ...
- GridControl 分组排序
方法一:纯代码 this.list.gridControl.ItemsSource = lsItem; this.list.gridControl.GroupBy("GroupTitle&q ...
- Ejb in action(一)——开篇介绍
从今天開始.我们共同来学习JavaEE中一个很重要的规范:Ejb. 既然您已经找到了这篇文章.就说明您至少已经对分布式开发有个大体上的概念了,之前没了解过也没关系,正好通过咱们的共同学习,一起来了解它 ...
- 在Lotus Notes设置邮件转发
Notes里面设置邮件转发,一种是创建一个Agent代理,但这种方式有弊端,就是邮件标题缺失,这个比较别扭.这里就不推荐了. 另一种方法是创建Rule规则,这种方式完美.具体方法如下: 1.点Tool ...
- Discuz常见小问题-如何使用QQ登陆
在首页中找到超链接 往下翻找到QQ互联,注意如果是内网无法开通(需要网站上传之后)
- Eclipse.ini參数设置(Maven Integration for Eclipse JDK Warning)
安装EclipseMaven插件后,Eclipse启动问题:Maven Integration for Eclipse JDK Warning. 解决方法: 1. 设置Eclipse使用的JRE为本 ...
- Activiti Designer 5.14.1插件安装和使用
1.离线包下载 离线安装包下载:https://files.cnblogs.com/files/modou/Activiti_BPMN_2.0_designer.rar 2.安装 先把jars文件夹中 ...
- Ubuntu下的多线程下载工具:MultiGet;并与 Firefox 建立关联 uget
Ubuntu下非常给力的下载工具--uget+aria2 1.uget的安装: sudo add-apt-repository ppa:plushuang-tw/uget-stable sudo ap ...