筛素数
来源:互联网 发布:淘宝装修助手 编辑:程序博客网 时间:2024/06/09 17:39
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>using namespace std;#define N 10000009bool vis[N];int num[N];void init(){ int m=sqrt(N+0.5); memset(vis,false,sizeof(vis)); memset(num,0,sizeof(num)); for(int i=2;i<=m;i++) { if(!vis[i]) { for(int j=i*i;j<=N;j+=i) { vis[j]=true; } } } for(int i=2;i<=N;i++) { if(!vis[i]) { num[i]=num[i-1]+1; } else num[i]=num[i-1]; }}int main(){#ifdef CDZSC freopen("i.txt","r",stdin);#endif init(); int t,n; scanf("%d",&t); while(t--) { scanf("%d",&n); printf("%d\n",num[n]); } return 0;}
是时候开始来一波数学了~\(≧▽≦)/~,开始数学专题。这一题就是直接上筛素数模板。
这是模板:
bool vis[N]; void prime_table(int n){int m = sqrt(n + 0.5);memset(vis, false, sizeof(vis));for (int i = 2; i <= m; i++){if (!vis[i]){for (int j = i*i; j <= n; j += i){vis[j] = true;}}}}
1133: 又见素数
Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 1370 Solved: 101
[Submit][Status][Web Board]
Description
给定一个正整数n(n <= 10000000),求n(包含)以内素数的个数。
Input
第一行为一个整数t(t <= 1000),表示测试数据的组数。 接下来有t行,每行一个整数n。
Output
对于每个n,求n以内素数的个数。
Sample Input
2510
Sample Output
34
HINT
Source
0 0
- 筛素数
- 素数筛
- 素数筛
- 素数筛
- 筛素数
- 素数筛
- 素数筛
- 筛素数
- 素数筛
- 素数筛
- 筛素数
- 筛素数
- 素数筛
- 素数筛
- 素数筛
- 素数筛
- 筛素数
- 素数筛
- CoreBluetooth的实现代码
- 递归算法复杂度的求法
- PHP:6种方法获取文件的扩展名
- 01-复杂度2 Maximum Subsequence Sum (25分)
- c#简单实现记事本功能
- 筛素数
- 【鸟哥的linux私房菜-学习笔记】首次使用相关知识、在线求助 man page
- Douglas Crockford 大神写的 JavaScript 异步控制库:RQ(上)
- 网络编程 笔记(九)Echo客户端 Utniy实现
- hdu5282 最长公共子序列
- Android网络通信框架LiteHttp:简介和教学大纲
- iOS开发常见error
- 我认为还是取决于我自己
- ML—SVM理论深度解析