嗯....

埃氏筛和欧拉筛的思想都是相似的:

如果一个数是素数,那么它的所有倍数都不是素数....

这里主要介绍一下欧拉筛的思路:(欧拉筛的复杂度大约在O(n)左右...

定义一个prime数组,这个数组被称为“素数表”,里面的数都为素数;然后用一个vis数组,如果一个数不是素数,则标记为1.

然后把i从2到n进行枚举,如果它没被访问过,则将其加入素数表中;然后for循环素数表,如果i % prime[j] == 0,则break即可,

因为prime[j]作为i的一个质因数,在某一种情况下,它肯定会被筛过一次。并且注意要每次要判断i * prime[i] 是否大于n...


下面这是一个模板题:

 题目链接:https://www.luogu.org/problemnew/show/P3383

思路上面讲的已经很清晰了,下面是AC代码:

 #include<cstdio>
#include<iostream> using namespace std; int n, m;
int cnt;
int prime[], vis[]; inline void is_prime(){
for(int i = ; i <= n; i++){
if(!vis[i]) prime[++cnt] = i;
for(int j = ; j <= cnt; j++){
if(i * prime[j] > n) break;//判断是否越界
vis[i*prime[j]] = ;//已访问
if(i % prime[j] == ) break;//欧拉筛核心
}
}
} int main(){
scanf("%d%d", &n, &m);
is_prime();
vis[] = vis[] = ;
int z;
for(int i = ; i <= m; i++){
scanf("%d", &z);
if(vis[z]) printf("No\n");
else printf("Yes\n");
}
return ;
}

AC代码

最新文章

  1. ROS中DDNS的使用
  2. mysql5.6 忘记root密码
  3. WebApi Controller 分类
  4. ORACLE误删除ASM磁盘修复
  5. ThinkPHP5 隐藏接口里面的index.php
  6. CSS 分享
  7. [Everyday Mathematics]20150109
  8. git参考书籍
  9. C# Quartz.Net 定时任务的简单使用
  10. 学习java随笔第二篇:java开发工具——Eclipse
  11. Axure滚动效果实现
  12. C#实现环形队列
  13. lll
  14. 【转】Linux方向职业分析
  15. EJB3基本概念、运行环境、下载安装与运行jboss
  16. Python-定时爬取指定城市天气(二)-邮件提醒
  17. 重磅推出TabLayout高级窗口组件
  18. 特征脸是怎么提取的之主成分分析法PCA
  19. JavaScript中的原型链和继承
  20. Android hook神器frida(二)

热门文章

  1. servicestack.redis工具类
  2. CentOS Mysql安装配置
  3. static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
  4. [C++] any number to binary (Bit manipulation)
  5. Spring Data JPA初使用 *****重要********
  6. 爬虫框架scrapy的基本内容
  7. [GO]定时器的停止和重置
  8. 编写高质量代码改善C#程序的157个建议——建议82:Parallel简化但不等同于Task默认行为
  9. JavaScript执行顺序
  10. kafka的api操作(官网http://kafka.apache.org/documentation/#producerapi)