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……那么如何确保每个合数只被筛选一次呢?我们只要用它的**最小质因子**来筛选即可,这便是欧拉筛法。


### 欧拉筛法


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



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)

  

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值