博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
埃式筛法 求质数
阅读量:3951 次
发布时间:2019-05-24

本文共 991 字,大约阅读时间需要 3 分钟。

参考资料

给定一个正整数n,请你求出1~n中质数的个数。

输入格式

共一行,包含整数n。

输出格式

共一行,包含一个整数,表示1~n中质数的个数。

数据范围

1≤n≤106
输入样例:

#include 
#include
#include
using namespace std;const int N=1e6+10;bool vis[N];int res;void get_primes(int n) {
for (int i=2;i<=n;++i) {
if (!vis[i]) {
for (int j=2;j*i<=n;++j) {
vis[j*i]=true; } ++res; } }}int main() {
int n;cin>>n; get_primes(n); cout << res;}

解法二:

#include 
#include
#include
using namespace std;const int N=1e6+10;bool vis[N];int primes[N];int _end;void get_primes(int n) {
for (int i=2;i<=n;++i) {
if (!vis[i]) primes[_end++]=i; for (int j=0; primes[j] <= n/i;++j) {
vis[primes[j]*i] = true; //如果是倍数,前面赋值过了 if (i % primes[j] ==0) break; } }}int main() {
int n;cin>>n; get_primes(n); cout << _end;}

转载地址:http://ryyzi.baihongyu.com/

你可能感兴趣的文章
创建、重命名文件
查看>>
文件大小保护
查看>>
删除指定目录下所有文件及目录
查看>>
XDR-从文件空间解码整数
查看>>
XDR-.x文件的简单使用
查看>>
XDR-枚举的试用
查看>>
使用CppSQLite3访问SQLite数据库
查看>>
第一个boost程序---timer的使用
查看>>
使用boost asio库实现字节数可控的CS通信
查看>>
linux下串口编程
查看>>
boot asio 非阻塞同步编程---非阻塞的accept和receive。
查看>>
利用ADOX、ADO操纵MDB文件(ACCESS)
查看>>
使用ADO操作MDB,关注数据类型
查看>>
使用windows自带Zip命令压缩文件
查看>>
windows获得文件大小
查看>>
Host 'ETCV3' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
查看>>
OCILIB在VS2008中的使用
查看>>
OCILIB VC2008 效率测试
查看>>
PL/SQL设置NUMBER显示为字符串
查看>>
linux ftp 脚本 -- 使用程序执行脚本
查看>>