数素数

时间限制: 1000ms 内存限制: 65536KB

问题描述

素数是的只能被1和它本身整除的自然数。判断一个数是素数的方法是使用2到该数的平方根的素数除它,若有能整除的则该数不是素数。

输入描述

本题有多组数据,每组数据由两个正整数M,N组成。( 0 < M ≤ N < 1000000)
第一行有一个正整数k表示下边有k组数据

输出描述

输出一个整数,表示介于M,N之间(包括M,N)的素数的数量。
计算最后输出END表示结束(注意END大写)

样例输入

3
5 10
1 3
6 8

样例输出

2
2
1
END

来源

{NOJ}, 2006

提示

1.注意空间和时间复杂度的平衡

问题分析:

居然不是一次AC的,那个“END"是个坑啊!俺开始没有输出它。

测试用例很多的时候是个坑,所以打表是必须的。

首先用Eratosthenes筛选法求得必要的素数,然后统计个数备用。

程序说明:

数组prime[]开始时存放素数,然后该存放素数的计数值(为了节省空间),prime[i]表示从1开始到i(包括i)的素数个数。

参考链接:NUC1921 E.迷雾森林

AC的C++程序如下:

#include <iostream>
#include <cmath>using namespace std;const int N = 1000000;
int prime[N+1];// Eratosthenes筛选法
void sieveofe(int p[], int n)
{int i, j;p[0] = 0;p[1] = 0;p[2] = 1;// 初始化for(i=3; i<n; i++) {p[i++] = 1;p[i] = 0;}int max = sqrt(n);for(i=3; i<=max; i++){if(p[i]) {for(j=i+i; j<=n; j+=i)    //进行筛选p[j]=0;}}
}void primecount(int p[], int n)
{int sum = 0;for(int i=0; i<=n; i++) {if(prime[i])sum++;p[i] = sum;}
}int main()
{int t, m, n;sieveofe(prime, N);primecount(prime, N);cin >> t;while(t--) {cin >> m >> n;cout << prime[n] - prime[m-1] << endl;}cout << "END" << endl;return 0;
}

NUC1019 数素数【素数筛选法】相关推荐

  1. c语言 用筛选法求100以内的素数,使用筛选法求100以内的素数

    使用筛选法求100以内的素数 筛选法介绍 先把N个自然数按次序排列起来. 1不是质数,也不是合数,划去. 第二个数2是质数留下来,而把2后面所有能被2整除的数都划去.2后面第一个没 划去的数是3,把3 ...

  2. c语言筛选法求100之内素数,用筛选法求100之内的素数。

    /*用筛选法求给出范围之内的素数.*/ #include #include int isPrime(int n){//判断素数 for(int i = 2; i < n; i ++){ if(n ...

  3. python filter求素数-埃拉托色尼筛选法

    质数:只可以被两个数整除,1和该数本身: 埃拉托色尼筛选法说明; (1)先把1删除(现今数学界1既不是质数也不是合数) (2)读取队列中当前最小的数2,然后把2的倍数删去 (3)读取队列中当前最小的数 ...

  4. python用筛选法求解小于n的所有素数_用筛选法求解n以内的所有素数

    用筛选法求解n以内的所有素数:筛选法的思想是一个数是素数则这个数的所有的倍数都是合数,我们不去找素数而去找合数,剩下的就是素数了.一个合数其最大的质因子不会超过其开发数,所以只要迭代到其最大数的开方数 ...

  5. 用筛选法求100以内的素数

    用筛选法求100以内的素数 所谓筛选法是指埃拉托色尼筛选.埃拉托色尼是古希腊的著名数学家.他采取的方法是,在一张纸上写上1到1000的全部整数,然后逐个判断他们是否素数,找出一个非素数,就把他们挖掉, ...

  6. Eratosthenes筛选法(C++版)

    Sieve of Eratosthenes 使用埃拉托斯特尼筛选法计算小于100000的素数. 埃拉托斯特尼筛选法是最为知名的产生素数的筛选法,适用于产生最小的N个素数. 该方法的唯一缺点是使用的存储 ...

  7. Eratosthenes筛选法

    比起C++版,有点太费空间,弃用.参见:Eratosthenes筛选法(C++版). Sieve of Eratosthenes 使用埃拉托斯特尼筛选法计算小于100000的素数. 埃拉托斯特尼筛选法 ...

  8. C语言实现埃拉托色尼筛选法(剔除数组中的非质数)

    质数就是只能被1和本身整除的数.Eratosthenes筛选法是一种计算质数的有效方法. 这个算法的第一步就是写下所有从2至某个上限之间的所有整数. 在算法的剩余部分,遍历整个列表并剔除所有不是质数的 ...

  9. 51nod 1536不一样的猜数游戏 思路:O(n)素数筛选法。同Codeforces 576A Vasya and Petya‘s Game。

    废话不多说,先上题目. 51nod Codeforces 两个其实是一个意思,看51nod题目就讲的很清楚了,题意不再赘述. 直接讲我的分析过程:刚开始拿到手有点蒙蔽,看起来很难,然后......然后 ...

最新文章

  1. android+图标闪烁动画,如何在android中闪烁通知图标? [DONE]
  2. valgrind概述及错误分析
  3. R语言ggplot2可视化使用geom_ribbon()函数向ggplot2图添加置信度带(Confidence Band、Confidence Interval)
  4. 基于Windows 2008 R2 Core的SQL Server 2008 R2 Cluster部署(Step by Step)
  5. 设计模式复习-享元模式
  6. java读取dcm影像文件_使用dcmtk库读取.dcm文件并获取信息+使用OpenCV显示图像
  7. 一个草根站长的创业故事·双喜临门
  8. 王凯1987计算机系,计算机科学与技术系王凯:付出总有回报
  9. php 生成验证码干扰元素,PHP生成指定位数验证码与可控干扰元素第二篇
  10. Elasticsearch 自定义分析器Analyzer
  11. python aes加密 cbc_【转载】python AES CBC模式加密
  12. 使用WindowsXP中的网桥功能
  13. 3628、验证回文串
  14. php 处理raw数据,PHP用HTTP_RAW_POST_DATA来接收post过来的数据
  15. 网络招聘信息的分析与挖掘
  16. wpf XDG000与XDG0012错误
  17. Predictive State Temporal Difference Learning 原文翻译预测状态时间差分学习
  18. SFDC 基本知识网络图
  19. 【NC204267】牛牛染颜色
  20. 小程序源码:聊天斗图微信表情包

热门文章

  1. Java中使用KCP协议
  2. Netty的使用:Server和Client通信
  3. 一张图彻底了解Unity脚本的生命周期
  4. 使用jQuery Mobile设计移动设备网站
  5. ND2D源码及范例工程(编译通过)
  6. matlab中求方差的,matlab中求方差为什么除以n-1?
  7. RabbitMQ基础进阶教程
  8. Java导出Excel 复杂表头
  9. Android集成Zxing
  10. hive之动态分区插入数据及其参数配置