筛素数
2015-10-23 22:39
190 查看
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> using namespace std; #define N 10000009 bool vis ; int num ; 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 ); } return 0; }
是时候开始来一波数学了~\(≧▽≦)/~,开始数学专题。这一题就是直接上筛素数模板。
这是模板:
bool vis ; 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
相关文章推荐
- MSSQL复制功能实现与Oracle数据库同步
- 采用ADM2582E/ADM2587E实现完全半/全双工的RS-485/RS-422接口隔离
- 多人过河问题
- Android端投影演示方案
- Guidelines for the Design of Small Sewage Treatment Plants
- 小白学编程第一日
- 关于JDBC链接问题
- C语言写冒泡排序
- Java概述与开发环境
- iOS -UIColor随机生成颜色的方法
- Handler任务模型之MessageQueue
- iOS -UIColor随机生成颜色的方法
- Ubuntu14.04 安装搜狗输入法
- Bootstrap Table的例子(转载)
- NGUI入门学习笔记
- WPF笔记(三)MVVM
- 我认为还是取决于我自己
- 递归函数
- 小白书部分动规习题
- GET请求的中文乱码问题及处理意义