https://www.acwing.com/problem/content/199/ 求解n!的质因数分解,n数量级1e6。 一个最简单的思路就是暴力分解每个数的质因数,复杂度过高。 换一种思路,当需要批量处理的时候,用线性筛求出每个数的最小质因数,然后对这个数进行质因数分解只需要log级别。 1 ...
线性筛 ~~我已经掌握埃氏筛了~~ 为什么还要学线性筛??? 线性筛的时间复杂度是严格 $O(N)$ 的, 而埃氏筛的复杂度是 $ O(N log_{2}( log_{2}(N) ) $ 看上去并没有快多少 ~~实际也是~~, 但在处理一些大数据时,差距就凸显出来了 算法思路 概述: 和埃氏筛类似的 ...
分类:
其他好文 时间:
2019-09-15 11:00:05
阅读次数:
298
C(n,m) 表示组合数,n>=m>=0 以下适用范围: n<=1e6(or 1e7...) 爆龙龙的答案需取模,允许取合数模。 时间复杂度 线性筛略大一点点 大概还是nlon(n) C(n,m)=n!/(m!*(n-m)!) 举例说明一下为什么可以通过下面代码去计算阶乘数的所有质因子各自的数目。 ...
分类:
其他好文 时间:
2019-09-03 09:26:02
阅读次数:
93
蒟蒻以欧拉心算为例子,浅谈一下如何求一些较复杂的积性函数 欧拉心算: $$\sum_{i=1}^n\sum_{j=1}^n\phi(gcd(i,j))$$ 与之前的一样: $$\sum_{d=1}^n\phi(d)\sum_{i=1}^{[n/d]}\sum_{j=1}^{[n/d]}[gcd(i, ...
分类:
其他好文 时间:
2019-09-02 12:12:44
阅读次数:
91
简单的引入一下欧拉函数 素数筛选知道4种,暴力筛(逐个判断),埃拉特斯特尼筛 ,欧拉线性筛 ,一个大于5的素数一定在6的倍数周围(PS:不知道官方名是什么) 埃拉特斯特尼筛法。时间复杂度为O(n loglog n) 欧拉线性筛法 时间复杂度(o(n) ) 一个大于5的素数一定在6的倍数周围 证明: ...
分类:
其他好文 时间:
2019-08-29 13:38:26
阅读次数:
101
const int N=100000+5; bool prime[N];//prime[i]表示i是不是质数 int p[N],tot;//p[N]用来存质数 void init() { //初始化为质数 for(int i=2;i<N;i++) prime[i]=true; for(int i=2... ...
分类:
其他好文 时间:
2019-08-28 10:51:02
阅读次数:
64
"LightOJ1259" Goldbach`s Conjecture 标签 线性筛 前言 我的csdn和博客园是同步的,欢迎来访 "danzh 博客园" ~ 简明题意 给定n(n const int maxn = 1e7 + 10; bool no_prime[maxn]; int prime[( ...
分类:
数据库 时间:
2019-08-27 17:24:33
阅读次数:
69
很久没做过莫比乌斯反演的题了,发现自己忘记莫比乌斯函数的线性筛法了,贴个模板方便复习吧 有一个埃氏筛做法,为了避免弄混,就只记一个好了 include using namespace std; define go(i,a,b) for(int i=a;ib) swap(a,b); for(int d ...
参考博客: https://www.cnblogs.com/Duahanlang/p/3212323.html 1.遇见素数时将该素数的倍数都筛掉 //缺陷是会重复筛选有不同素数因子的合数 如 10=2*5 ,将被筛两次 2.线性筛法 当i遍历到为前面已经存储的素数的倍数时跳出循坏 3.进一步优化 ...
分类:
其他好文 时间:
2019-08-13 15:29:57
阅读次数:
74
我们都知道欧拉筛又称线性筛,能在O(n)的时间复杂度内筛出n以内的所有质数,而我们只要在线性筛的代码上改良一下就能求出n以内所有数的欧拉函数了。筛质数时,设外层在枚举i,内层枚举到prime[j],这时有两种情况: 附上代码: ...
分类:
其他好文 时间:
2019-08-07 09:21:58
阅读次数:
198