当前位置:   article > 正文

2024年最全欧拉筛法(线性筛)的学习理解_欧拉筛原理(1),2024年最新蚂蚁金服的面试流程

欧拉筛

总结

面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。

还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。

万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

前端面试题汇总

JavaScript

前端资料汇总


这里有一个小优化,j 从 i \* i 而不是从 i + i开始,因为 i\*(2~ i-1)在 2~i-1时都已经被筛去,所以从i \* i开始。


* 埃氏筛法的缺陷 :对于一个合数,有可能被筛多次。例如 30 = 2 \* 15 = 3 \* 10 = 5\*6……那么如何确保每个合数只被筛选一次呢?我们只要用它的**最小质因子**来筛选即可,这便是欧拉筛法。


### 欧拉筛法


* 欧拉筛法的基本思想 :在埃氏筛法的基础上,让每个合数只被它的最小质因子筛选一次,以达到不重复的目的。
* 代码 :



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

int prime[maxn];
int visit[maxn];
void Prime(){
mem(visit,0);
mem(prime, 0);
for (int i = 2;i <= maxn; i++) {
cout<<" i = "<<i<<endl;
if (!visit[i]) {
prime[++prime[0]] = i; //纪录素数, 这个prime[0] 相当于 cnt,用来计数
}
for (int j = 1; j <=prime[0] && iprime[j] <= maxn; j++) {
// cout<<" j = “<<j<<” prime[“<<j<<”]“<<” = “<<prime[j]<<” i
prime[j] = "<<iprime[j]<<endl;
visit[i
prime[j]] = 1;
if (i % prime[j] == 0) {
break;
}
}
}
}


1. 对于visit[i\*prime[j]] = 1 的解释: 这里不是用i的倍数来消去合数,而是把 prime里面纪录的素数,升序来当做要消去合数的最小素因子。  
 打表观察来理解 :  
 ![输出前十个循环](https://img-blog.csdn.net/20180905181200666?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NzYzNDcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)  
 发现i在消去合数中的作用是当做倍数的。
2. 对于 i%prime[j] == 0 就break的解释 :当 i是prime[j]的倍数时,i = k*prime[j],如果继续运算 j+1,i \* prime[j+1] = prime[j] \* k* prime[j+1],这里prime[j]是最小的素因子,当i = k \* prime[j+1]时会重复,所以才跳出循环。  
 举个例子 :i = 8 ,j = 1,prime[j] = 2,如果不跳出循环,prime[j+1] = 3,8 \* 3 = 2 \* 4 \* 3 = 2 \* 12,在i = 12时会计算。因为欧拉筛法的原理便是通过最小素因子来消除。


### 结语


对于欧拉筛法的学习是先从接触到题开始的,研究了一天才弄懂,很惭愧,再次遇到题也不见得可以游刃有余的解决,在此与大家共勉,学海无涯。  
 附上题目 :https://nanti.jisuanke.com/t/30999 (大佬眼中的签到题)




### 常用的JavaScript设计模式

* 单体模式

* 工厂模式

* 例模式

  ![](https://img-blog.csdnimg.cn/20210616215753130.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NjEzNDM4MQ==,size_16,color_FFFFFF,t_70)

  

### 函数

* 函数的定义

* 局部变量和全局变量

* 返回值

* 匿名函数

* 自运行函数

* 闭包

  **[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**

  ![](https://img-blog.csdnimg.cn/20210616215826268.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NjEzNDM4MQ==,size_16,color_FFFFFF,t_70)

  

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/947506
推荐阅读
相关标签
  

闽ICP备14008679号