NUC1019 数素数【素数筛选法】
数素数
时间限制: 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 数素数【素数筛选法】相关推荐
- c语言 用筛选法求100以内的素数,使用筛选法求100以内的素数
使用筛选法求100以内的素数 筛选法介绍 先把N个自然数按次序排列起来. 1不是质数,也不是合数,划去. 第二个数2是质数留下来,而把2后面所有能被2整除的数都划去.2后面第一个没 划去的数是3,把3 ...
- c语言筛选法求100之内素数,用筛选法求100之内的素数。
/*用筛选法求给出范围之内的素数.*/ #include #include int isPrime(int n){//判断素数 for(int i = 2; i < n; i ++){ if(n ...
- python filter求素数-埃拉托色尼筛选法
质数:只可以被两个数整除,1和该数本身: 埃拉托色尼筛选法说明; (1)先把1删除(现今数学界1既不是质数也不是合数) (2)读取队列中当前最小的数2,然后把2的倍数删去 (3)读取队列中当前最小的数 ...
- python用筛选法求解小于n的所有素数_用筛选法求解n以内的所有素数
用筛选法求解n以内的所有素数:筛选法的思想是一个数是素数则这个数的所有的倍数都是合数,我们不去找素数而去找合数,剩下的就是素数了.一个合数其最大的质因子不会超过其开发数,所以只要迭代到其最大数的开方数 ...
- 用筛选法求100以内的素数
用筛选法求100以内的素数 所谓筛选法是指埃拉托色尼筛选.埃拉托色尼是古希腊的著名数学家.他采取的方法是,在一张纸上写上1到1000的全部整数,然后逐个判断他们是否素数,找出一个非素数,就把他们挖掉, ...
- Eratosthenes筛选法(C++版)
Sieve of Eratosthenes 使用埃拉托斯特尼筛选法计算小于100000的素数. 埃拉托斯特尼筛选法是最为知名的产生素数的筛选法,适用于产生最小的N个素数. 该方法的唯一缺点是使用的存储 ...
- Eratosthenes筛选法
比起C++版,有点太费空间,弃用.参见:Eratosthenes筛选法(C++版). Sieve of Eratosthenes 使用埃拉托斯特尼筛选法计算小于100000的素数. 埃拉托斯特尼筛选法 ...
- C语言实现埃拉托色尼筛选法(剔除数组中的非质数)
质数就是只能被1和本身整除的数.Eratosthenes筛选法是一种计算质数的有效方法. 这个算法的第一步就是写下所有从2至某个上限之间的所有整数. 在算法的剩余部分,遍历整个列表并剔除所有不是质数的 ...
- 51nod 1536不一样的猜数游戏 思路:O(n)素数筛选法。同Codeforces 576A Vasya and Petya‘s Game。
废话不多说,先上题目. 51nod Codeforces 两个其实是一个意思,看51nod题目就讲的很清楚了,题意不再赘述. 直接讲我的分析过程:刚开始拿到手有点蒙蔽,看起来很难,然后......然后 ...
最新文章
- android+图标闪烁动画,如何在android中闪烁通知图标? [DONE]
- valgrind概述及错误分析
- R语言ggplot2可视化使用geom_ribbon()函数向ggplot2图添加置信度带(Confidence Band、Confidence Interval)
- 基于Windows 2008 R2 Core的SQL Server 2008 R2 Cluster部署(Step by Step)
- 设计模式复习-享元模式
- java读取dcm影像文件_使用dcmtk库读取.dcm文件并获取信息+使用OpenCV显示图像
- 一个草根站长的创业故事·双喜临门
- 王凯1987计算机系,计算机科学与技术系王凯:付出总有回报
- php 生成验证码干扰元素,PHP生成指定位数验证码与可控干扰元素第二篇
- Elasticsearch 自定义分析器Analyzer
- python aes加密 cbc_【转载】python AES CBC模式加密
- 使用WindowsXP中的网桥功能
- 3628、验证回文串
- php 处理raw数据,PHP用HTTP_RAW_POST_DATA来接收post过来的数据
- 网络招聘信息的分析与挖掘
- wpf XDG000与XDG0012错误
- Predictive State Temporal Difference Learning 原文翻译预测状态时间差分学习
- SFDC 基本知识网络图
- 【NC204267】牛牛染颜色
- 小程序源码:聊天斗图微信表情包