hnust 1101(水): 实验3-3:统计素数个数
来源:互联网 发布:mac口红代购 编辑:程序博客网 时间:2024/05/22 03:08
题目描述
从键盘输入一个整数n(98000<=n<=100000),统计1至n范围内素数的个数。
质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。换句话说,只有两个正因数(1和自己)的自然数即为素数。比1大但不是素数的数称为合数。1和0既非素数也非合数。
输入
输入一个整数n(98000<=n<=100000)
输出
素数的个数
样例输入
100000
样例输出
9592
提示
本题由教材例3-18改编而成
本题需要考虑对算法的优化,虽然题目给了2秒的执行时间,但如果你的算法设计不好,仍然可能会超时哟!超时的提示是:Time Limit Exceed,简称TLE
本题难度系数为5
来源
Derson
结题思路:
素数我不怎么会用,还有很多求素数的办法,各种优化,我觉得很难,有点看不懂,筛选法啊什么的我搞不清,看这个n这么大可能不能够暴力求解,一定会超时,看了人家博客的结题,自己又敲了一遍,算是借鉴。
#include <iostream>#include <algorithm>#include <cmath>#define true 1#define false 0const int maxn=100001;int shu[maxn];using namespace std;void is_getprime(int n){ int i,j; shu[0]=shu[1]=true; for(i=2;i<=sqrt(n);i++)//从2到根号n中,表示是否有素数,存在则是false,不存在是true; { if(!shu[i])//i为素数 for(j=i+i;j<=n;j+=i)//将编号为i的倍数的数均标记为非素数,因为存在公因数 shu[j]=true; }}int main(){ int n; while(cin>>n) { int i=0,l=0; is_getprime(n); for(i=2;i<=n;i++) if(shu[i]==false)//调用函数之后,直接计算i到n之间的素数即可 l++; cout<<l<<endl; } return 0;}
阅读全文
0 0
- hnust 1101(水): 实验3-3:统计素数个数
- wikioi1439统计素数个数
- 素数的个数统计
- 统计素数个数
- 1439 统计素数个数
- 实验4(统计文本单词个数)
- MPI—统计素数个数
- 【算法】寻找1000000000(十亿)内素数并统计个数
- HNUST 1231:猜牌术(水....)
- Java实验(3) 回文素数
- 【codevs1453 统计素数个数2】E氏筛法
- 湖南科技大学ACM1001统计素数个数
- 汇编实验:分类统计字符个数
- c++实验5--统计输出字符串中(大/小写)字母个数,数字个数及其它字符个数。
- 统计整数区间[a,b](a、b从键盘输入)中素数的个数,并输出这些素数。
- 开发可统计单词个数的Android驱动程序(3)
- 开发可统计单词个数的Android驱动程序(3)
- (3)C语言代码之统计单词个数
- Problem 1004-2017 ACM/ICPC Asia Regional Shenyang Online
- Turtlebot3入门手册之六:开始使用和远程操作
- PAT1028
- .Net深入体验与实践第一章
- 顺时针输出二维数组元素值
- hnust 1101(水): 实验3-3:统计素数个数
- 欢迎使用CSDN-markdown编辑器
- Ajax(JavaScript)
- MySQL数据导入--load data
- (黑科技)如何让你的BLOG访问量增加
- MFC中简单图形的平移与简单旋转
- 数据结构之栈的应用(3)逆波兰式
- 数据库锁-行锁、页锁、表锁
- Android 视频直播开发