一、埃拉托斯特尼筛法简介
埃拉托斯特尼筛法(Sieve of Eratosthenes)是一种能快速求出
1
~
n
1\sim n
1~n内所有质数的方法。埃拉托斯特尼就是用很聪明的方法测出地球周长的那个希腊人。算法的过程是:枚举
1
~
n
1\sim n
1~n中的每个数
i
i
i,如果它没有被前面的数标记过,则
i
i
i为质数,此时标记它的
2
,
3
,
4
?
2,3,4\cdots
2,3,4?倍为合数。C++ 代码如下:
bool isprime[MAXN];
int prime[MAXN];
int cnt;
int n;
void Eratosthenes()
{
memset(isprime, true, sizeof(isprime));
for(int i = 2; i <= n; ++i)
{
if(isprime[i])
{
prime[++cnt] = i;
for(int j = i + i; j <= n; j += i)
isprime[j] = false;
}
}
}
可以看出,对于每个质数
i
i
i,我们都要将
i
i
i的倍数标记为合数。而
i
i
i的倍数在
1
~
n
1\sim n
1~n内共有
?
n
i
?
\left\lfloor\frac{n}{i}\right\rfloor
?in??个,所以在忽略线性复杂度的外层循环的情况下,算法需要进行的运算次数就是
?
n
2
?
+
?
n
3
?
+
?
n
5
?
+
?
n
7
?
+
?
+
?
n
p
m
?
\left\lfloor\frac{n}{2}\right\rfloor+\left\lfloor\frac{n}{3}\right\rfloor+\left\lfloor\frac{n}{5}\right\rfloor+\left\lfloor\frac{n}{7}\right\rfloor+\cdots+\left\lfloor\frac{n}{p_m}\right\rfloor
?2n??+?3n??+?5n??+?7n??+?+?pm?n??其中
p
m
p_m
pm?是
n
n
n以内最大的质数。为了简化计算,将取整符号去掉,就是
n
(
1
2
+
1
3
+
1
5
+
1
7
+
?
+
1
p
m
)
n\left(\frac12+\frac13+\frac15+\frac17+\cdots+\frac{1}{p_m}\right)
n(21?+31?+51?+71?+?+pm?1?)这里所做的的近似误差不超过
O
(
n
)
O(n)
O(n),对结果没有影响。我们知道,埃拉托斯特尼筛法的复杂度是
O
(
n
log
?
(
log
?
(
n
)
)
)
O(n\log(\log(n)))
O(nlog(log(n))),令
h
(
n
)
=
1
2
+
1
3
+
1
5
+
1
7
+
?
+
1
p
m
=
∑
p
∈
Prime
,
p
≤
n
1
p
h(n)=\frac12+\frac13+\frac15+\frac17+\cdots+\frac{1}{p_m}=\sum\limits_{p\in\text{Prime},p\le n}\frac1p
h(n)=21?+31?+51?+71?+?+pm?1?=p∈Prime,p≤n∑?p1?,则我们要证明的就是
h
(
n
)
=
O
(
log
?
(
log
?
(
n
)
)
)
h(n)=O(\log(\log(n)))
h(n)=O(log(log(n)))。
二、黎曼
ζ
\zeta
ζ函数与欧拉乘积公式
要证明上面这个结论,就不得不介绍以下黎曼
ζ
\zeta
ζ函数。黎曼
ζ
\zeta
ζ函数的定义是
ζ
(
s
)
=
∑
n
=
1
∞
n
?
s
=
1
1
s
+
1
2
s
+
1
3
s
+
1
4
2
+
?
①
\zeta(s)=\sum\limits_{n=1}^\infty n^{-s}=\frac{1}{1^s}+\frac{1}{2^s}+\frac{1}{3^s}+\frac{1}{4^2}+\cdots\quad①
ζ(s)=n=1∑∞?n?s=1s1?+2s1?+3s1?+421?+?①这里用
s
s
s而不是
x
x
x作为变量的字母是因为自变量是复数。例如,当
s
=
2
s=2
s=2时有
ζ
(
2
)
=
1
+
1
2
2
+
1
3
2
+
1
4
2
+
?
=
π
2
6
\zeta(2)=1+\frac{1}{2^2}+\frac{1}{3^2}+\frac{1}{4^2}+\cdots=\frac{\pi^2}{6}
ζ(2)=1+221?+321?+421?+?=6π2?另外,黎曼猜想就是说
ζ
(
s
)
\zeta(s)
ζ(s)的零点要么是负偶数,要么是实部为
1
2
\frac12
21?的复数。
下面介绍欧拉乘积公式。在
ζ
(
s
)
\zeta(s)
ζ(s)两边同时乘以
1
2
s
\frac{1}{2^s}
2s1?得
1
2
s
ζ
(
s
)
=
1
1
s
?
2
s
+
1
2
s
?
2
s
+
1
3
s
?
2
s
+
1
4
s
?
2
s
+
?
=
1
2
s
+
1
4
s
+
1
6
s
+
1
8
s
+
?
②
\frac{1}{2^s}\zeta(s)=\frac{1}{1^s\cdot2^s}+\frac{1}{2^s\cdot2^s}+\frac{1}{3^s\cdot2^s}+\frac{1}{4^s\cdot2^s}+\cdots=\frac{1}{2^s}+\frac{1}{4^s}+\frac{1}{6^s}+\frac{1}{8^s}+\cdots\quad②
2s1?ζ(s)=1s?2s1?+2s?2s1?+3s?2s1?+4s?2s1?+?=2s1?+4s1?+6s1?+8s1?+?②
①
?
②
①-②
①?②,偶数项消掉,留下奇数项得
(
1
?
1
2
s
)
ζ
(
s
)
=
1
1
s
+
1
3
s
+
1
5
s
+
1
7
s
+
?
③
(1-\frac{1}{2^s})\zeta(s)=\frac{1}{1^s}+\frac{1}{3^s}+\frac{1}{5^s}+\frac{1}{7^s}+\cdots\quad③
(1?2s1?)ζ(s)=1s1?+3s1?+5s1?+7s1?+?③在
③
③
③两边同时乘以
1
3
s
\frac{1}{3^s}
3s1?得
1
3
s
(
1
?
1
2
s
)
ζ
(
s
)
=
1
3
s
+
1
9
s
+
1
1
5
s
+
1
2
1
s
+
?
④
\frac{1}{3^s}(1-\frac{1}{2^s})\zeta(s)=\frac{1}{3^s}+\frac{1}{9^s}+\frac{1}{15^s}+\frac{1}{21^s}+\cdots\quad④
3s1?(1?2s1?)ζ(s)=3s1?+9s1?+15s1?+21s1?+?④
③
?
④
③-④
③?④,消去
3
3
3的倍数项得
(
1
?
1
3
s
)
(
1
?
1
2
s
)
ζ
(
s
)
=
1
1
s
+
1
5
s
+
1
7
s
+
1
1
3
s
+
?
⑤
(1-\frac{1}{3^s})(1-\frac{1}{2^s})\zeta(s)=\frac{1}{1^s}+\frac{1}{5^s}+\frac{1}{7^s}+\frac{1}{13^s}+\cdots\quad⑤
(1?3s1?)(1?2s1?)ζ(s)=1s1?+5s1?+7s1?+13s1?+?⑤不断重复这种操作,在原式两端乘上
1
p
s
\frac{1}{p^s}
ps1?(
p
p
p为某个质数)再用原式减掉,就可以在右边消去这个质数的倍数。当所有质数都经历过这种操作后,右边就只剩下
1
1
1,所以得到
(
1
?
1
2
s
)
(
1
?
1
3
s
)
(
1
?
1
5
s
)
(
1
?
1
7
s
)
(
1
?
1
1
1
s
)
?
ζ
(
s
)
=
1
(1-\frac{1}{2^s})(1-\frac{1}{3^s})(1-\frac{1}{5^s})(1-\frac{1}{7^s})(1-\frac{1}{11^s})\cdots\zeta(s)=1
(1?2s1?)(1?3s1?)(1?5s1?)(1?7s1?)(1?11s1?)?ζ(s)=1即
ζ
(
s
)
=
∏
p
∈
Prime
1
1
?
1
p
s
\zeta(s)=\prod\limits_{p\in\text{Prime}}\frac{1}{1-\frac{1}{p^s}}
ζ(s)=p∈Prime∏?1?ps1?1?这就是欧拉乘积公式。
三、问题求解
在欧拉乘积公式中代入
s
=
1
s=1
s=1得
1
+
1
2
+
1
3
+
1
4
+
?
=
∏
p
∈
Prime
1
1
?
1
p
1+\frac12+\frac13+\frac14+\cdots=\prod\limits_{p\in\text{Prime}}\frac{1}{1-\frac{1}{p}}
1+21?+31?+41?+?=p∈Prime∏?1?p1?1?两边取对数得
ln
?
(
1
+
1
2
+
1
3
+
1
4
+
?
?
)
=
?
∑
p
∈
Prime
ln
?
(
1
?
1
p
)
⑥
\ln\left(1+\frac12+\frac13+\frac14+\cdots\right)=-\sum\limits_{p\in\text{Prime}}\ln\left(1-\frac{1}{p}\right)\quad⑥
ln(1+21?+31?+41?+?)=?p∈Prime∑?ln(1?p1?)⑥考虑将函数
f
(
x
)
=
ln
?
(
1
?
x
)
f(x)=\ln(1-x)
f(x)=ln(1?x)展开成麦克劳林级数
ln
?
(
1
?
x
)
=
?
x
?
x
2
2
?
x
3
3
?
?
?
x
n
n
?
?
=
?
∑
k
=
1
∞
x
k
k
\ln(1-x)=-x-\frac{x^2}{2}-\frac{x^3}{3}-\cdots-\frac{x^n}{n}-\cdots=-\sum\limits_{k=1}^{\infty}\frac{x^k}{k}
ln(1?x)=?x?2x2??3x3????nxn???=?k=1∑∞?kxk?令
x
=
1
p
x=\frac1p
x=p1?,将展开式代入
⑥
⑥
⑥式右边得
ln
?
(
∑
k
=
1
∞
1
k
)
=
∑
p
∈
Prime
∑
k
=
1
∞
1
k
p
k
⑦
\ln\left(\sum\limits_{k=1}^{\infty}\frac{1}{k}\right)=\sum\limits_{p\in\text{Prime}}\sum\limits_{k=1}^{\infty}\frac{1}{kp^k}\quad⑦
ln(k=1∑∞?k1?)=p∈Prime∑?k=1∑∞?kpk1?⑦回顾一下我们要证明的结论:
h
(
n
)
=
1
2
+
1
3
+
1
5
+
1
7
+
?
+
1
p
m
=
O
(
log
?
(
log
?
(
n
)
)
)
h(n)=\frac12+\frac13+\frac15+\frac17+\cdots+\frac{1}{p_m}=O(\log(\log(n)))
h(n)=21?+31?+51?+71?+?+pm?1?=O(log(log(n)))要证
h
(
n
)
=
O
(
log
?
(
log
?
(
n
)
)
)
h(n)=O(\log(\log(n)))
h(n)=O(log(log(n))),只需证
lim
?
n
→
∞
h
(
n
)
ln
?
(
ln
?
(
n
)
)
=
1
\lim\limits_{n\to\infty}\frac{h(n)}{\ln(\ln(n))}=1
n→∞lim?ln(ln(n))h(n)?=1我们知道,
∑
k
=
1
n
1
k
=
ln
?
n
+
O
(
1
)
\sum\limits_{k=1}^{n}\frac{1}{k}=\ln n+O(1)
k=1∑n?k1?=lnn+O(1),亦即
?
M
>
0
\exists M>0
?M>0,使得
?
n
∈
N
+
\forall n\in\mathbb N^+
?n∈N+,都有
∑
k
=
1
n
1
k
≤
ln
?
n
+
M
\sum\limits_{k=1}^{n}\frac{1}{k}\le\ln n+M
k=1∑n?k1?≤lnn+M。设
δ
=
ln
?
n
?
∑
k
=
1
n
1
k
\delta=\ln n-\sum\limits_{k=1}^{n}\frac{1}{k}
δ=lnn?k=1∑n?k1?,则
?
n
∈
N
+
\forall n\in\mathbb N^+
?n∈N+有
δ
<
M
\delta<M
δ<M。由拉格朗日中值定理知,
ln
?
(
ln
?
n
+
δ
)
?
ln
?
(
ln
?
n
)
=
1
ξ
δ
\ln(\ln n+\delta)-\ln(\ln n)=\frac{1}{\xi}\delta
ln(lnn+δ)?ln(lnn)=ξ1?δ,其中
ξ
∈
(
ln
?
n
,
ln
?
n
+
δ
)
\xi\in(\ln n,\ln n+\delta)
ξ∈(lnn,lnn+δ)。而
δ
≤
M
\delta\le M
δ≤M,
ξ
>
n
≥
1
\xi>n\ge1
ξ>n≥1,所以有
ln
?
(
ln
?
n
+
δ
)
=
ln
?
(
ln
?
n
)
+
δ
ξ
≤
ln
?
(
ln
?
n
)
+
M
\ln(\ln n+\delta)=\ln(\ln n)+\frac{\delta}{\xi}\le\ln(\ln n)+M
ln(lnn+δ)=ln(lnn)+ξδ?≤ln(lnn)+M注意到
∑
k
=
1
n
1
k
=
ln
?
n
+
δ
\sum\limits_{k=1}^{n}\frac{1}{k}=\ln n+\delta
k=1∑n?k1?=lnn+δ,故
lim
?
n
→
∞
ln
?
(
∑
k
=
1
n
1
k
)
ln
?
(
ln
?
n
)
=
1
⑧
\lim\limits_{n\to\infty}\frac{\ln\left(\sum\limits_{k=1}^{n}\frac{1}{k}\right)}{\ln(\ln n)}=1\quad⑧
n→∞lim?ln(lnn)ln(k=1∑n?k1?)?=1⑧令
z
(
n
)
=
∑
p
∈
Prime
,
p
≤
n
∑
k
=
1
∞
1
k
p
k
z(n)=\sum\limits_{p\in\text{Prime},p\le n}\sum\limits_{k=1}^{\infty}\frac{1}{kp^k}
z(n)=p∈Prime,p≤n∑?k=1∑∞?kpk1?,将
⑦
⑦
⑦表示为极限形式:
lim
?
n
→
∞
ln
?
(
∑
k
=
1
∞
1
k
)
=
lim
?
n
→
∞
z
(
n
)
\lim\limits_{n\to\infty}\ln\left(\sum\limits_{k=1}^{\infty}\frac{1}{k}\right)=\lim\limits_{n\to\infty}z(n)
n→∞lim?ln(k=1∑∞?k1?)=n→∞lim?z(n)再由
⑧
⑧
⑧,知
lim
?
n
→
∞
z
(
n
)
ln
?
(
ln
?
n
)
=
1
\lim\limits_{n\to\infty}\frac{z(n)}{\ln(\ln n)}=1
n→∞lim?ln(lnn)z(n)?=1所以只需证
lim
?
n
→
∞
h
(
n
)
z
(
n
)
=
1
\lim\limits_{n\to\infty}\frac{h(n)}{z(n)}=1
n→∞lim?z(n)h(n)?=1我们采用夹逼准则。设等式左边的值为
c
c
c。 (1) 对分母进行缩小,注意到
z
(
n
)
=
∑
p
∈
Prime
,
p
≤
n
∑
k
=
1
∞
1
k
p
k
=
(
∑
p
∈
Prime
,
p
≤
n
1
p
)
+
∑
k
=
2
∞
1
k
(
∑
p
∈
Prime
,
p
≤
n
1
p
k
)
=
h
(
n
)
+
∑
k
=
2
∞
1
k
(
∑
p
∈
Prime
,
p
≤
n
1
p
k
)
z(n)=\sum\limits_{p\in\text{Prime},p\le n}\sum\limits_{k=1}^{\infty}\frac{1}{kp^k}=\left(\sum\limits_{p\in\text{Prime},p\le n}\frac{1}{p}\right)+\sum\limits_{k=2}^{\infty}\frac1k\left(\sum\limits_{p\in\text{Prime},p\le n}\frac{1}{p^k}\right)=h(n)+\sum\limits_{k=2}^{\infty}\frac1k\left(\sum\limits_{p\in\text{Prime},p\le n}\frac{1}{p^k}\right)
z(n)=p∈Prime,p≤n∑?k=1∑∞?kpk1?=(p∈Prime,p≤n∑?p1?)+k=2∑∞?k1?(p∈Prime,p≤n∑?pk1?)=h(n)+k=2∑∞?k1?(p∈Prime,p≤n∑?pk1?),故
z
(
n
)
≥
h
(
n
)
z(n)\ge h(n)
z(n)≥h(n),
c
≤
lim
?
n
→
∞
h
(
n
)
h
(
n
)
=
1
c\le\lim\limits_{n\to\infty}\frac{h(n)}{h(n)}=1
c≤n→∞lim?h(n)h(n)?=1。 (2) 对分母进行放大,注意到
1
k
p
k
≤
1
p
k
\frac{1}{kp^k}\le\frac{1}{p^k}
kpk1?≤pk1?,且
∑
k
=
1
∞
1
p
k
=
1
p
?
1
\sum\limits_{k=1}^{\infty}\frac{1}{p^k}=\frac{1}{p-1}
k=1∑∞?pk1?=p?11?,有
z
(
n
)
≤
∑
p
∈
Prime
,
p
≤
n
∑
k
=
1
∞
1
p
k
=
∑
p
∈
Prime
,
p
≤
n
1
p
?
1
z(n)\le\sum\limits_{p\in\text{Prime},p\le n}\sum\limits_{k=1}^{\infty}\frac{1}{p^k}=\sum\limits_{p\in\text{Prime},p\le n}\frac{1}{p-1}
z(n)≤p∈Prime,p≤n∑?k=1∑∞?pk1?=p∈Prime,p≤n∑?p?11?,因此
c
≥
lim
?
n
→
∞
h
(
n
)
∑
p
∈
Prime
,
p
≤
n
1
p
?
1
c\ge\lim\limits_{n\to\infty}\frac{h(n)}{\sum\limits_{p\in\text{Prime},p\le n}\frac{1}{p-1}}
c≥n→∞lim?p∈Prime,p≤n∑?p?11?h(n)?容易验证
1
p
?
1
=
1
p
+
1
p
(
p
?
1
)
\frac{1}{p-1}=\frac1p+\frac{1}{p(p-1)}
p?11?=p1?+p(p?1)1?,代入得
c
≥
lim
?
n
→
∞
h
(
n
)
∑
p
∈
Prime
,
p
≤
n
1
p
+
∑
p
∈
Prime
,
p
≤
n
1
p
(
p
?
1
)
=
lim
?
n
→
∞
h
(
n
)
h
(
n
)
+
∑
p
∈
Prime
,
p
≤
n
1
p
(
p
?
1
)
=
lim
?
n
→
∞
1
1
+
∑
p
∈
Prime
,
p
≤
n
1
p
(
p
?
1
)
h
(
n
)
c\ge\lim\limits_{n\to\infty}\frac{h(n)}{\sum\limits_{p\in\text{Prime},p\le n}\frac{1}{p}+\sum\limits_{p\in\text{Prime},p\le n}\frac{1}{p(p-1)}}=\lim\limits_{n\to\infty}\frac{h(n)}{h(n)+\sum\limits_{p\in\text{Prime},p\le n}\frac{1}{p(p-1)}}=\lim\limits_{n\to\infty}\frac{1}{1+\frac{\sum\limits_{p\in\text{Prime},p\le n}\frac{1}{p(p-1)}}{h(n)}}
c≥n→∞lim?p∈Prime,p≤n∑?p1?+p∈Prime,p≤n∑?p(p?1)1?h(n)?=n→∞lim?h(n)+p∈Prime,p≤n∑?p(p?1)1?h(n)?=n→∞lim?1+h(n)p∈Prime,p≤n∑?p(p?1)1??1?其中
lim
?
n
→
∞
∑
p
∈
Prime
,
p
≤
n
1
p
(
p
?
1
)
h
(
n
)
≤
lim
?
n
→
∞
∑
p
∈
Prime
,
p
≤
n
1
p
p
2
h
(
n
)
=
1
2
lim
?
n
→
∞
∑
p
∈
Prime
,
p
≤
n
1
p
2
h
(
n
)
≤
lim
?
n
→
∞
∑
k
=
1
n
1
k
2
h
(
n
)
\lim\limits_{n\to\infty}\frac{\sum\limits_{p\in\text{Prime},p\le n}\frac{1}{p(p-1)}}{h(n)}\le\lim\limits_{n\to\infty}\frac{\sum\limits_{p\in\text{Prime},p\le n}\frac{1}{p\frac{p}{2}}}{h(n)}=\frac12\lim\limits_{n\to\infty}\frac{\sum\limits_{p\in\text{Prime},p\le n}\frac{1}{p^2}}{h(n)}\le\lim\limits_{n\to\infty}\frac{\sum\limits_{k=1}^{n}\frac{1}{k^2}}{h(n)}
n→∞lim?h(n)p∈Prime,p≤n∑?p(p?1)1??≤n→∞lim?h(n)p∈Prime,p≤n∑?p2p?1??=21?n→∞lim?h(n)p∈Prime,p≤n∑?p21??≤n→∞lim?h(n)k=1∑n?k21??其中分母的和式是收敛的:
∑
k
=
1
∞
1
k
2
=
ζ
(
2
)
=
π
2
6
\sum\limits_{k=1}^{\infty}\frac{1}{k^2}=\zeta(2)=\frac{\pi^2}{6}
k=1∑∞?k21?=ζ(2)=6π2?,那么我们只需讨论
h
(
n
)
h(n)
h(n)的收敛性。 首先,
lim
?
n
→
∞
z
(
n
)
=
∑
p
∈
Prime
,
p
≤
n
∑
k
=
1
∞
1
k
p
k
\lim\limits_{n\to\infty}z(n)=\sum\limits_{p\in\text{Prime},p\le n}\sum\limits_{k=1}^{\infty}\frac{1}{kp^k}
n→∞lim?z(n)=p∈Prime,p≤n∑?k=1∑∞?kpk1?一定是发散的,因为
lim
?
n
→
∞
ln
?
(
ln
?
n
)
=
+
∞
\lim\limits_{n\to\infty}\ln(\ln n)=+\infty
n→∞lim?ln(lnn)=+∞,而
lim
?
n
→
∞
z
(
n
)
ln
?
(
ln
?
n
)
=
1
\lim\limits_{n\to\infty}\frac{z(n)}{\ln(\ln n)}=1
n→∞lim?ln(lnn)z(n)?=1。又
c
≥
lim
?
n
→
∞
h
(
n
)
∑
p
∈
Prime
,
p
≤
n
2
p
=
1
2
c\ge\lim\limits_{n\to\infty}\frac{h(n)}{\sum\limits_{p\in\text{Prime},p\le n}\frac{2}{p}}=\frac12
c≥n→∞lim?p∈Prime,p≤n∑?p2?h(n)?=21?,因此
h
(
n
)
h(n)
h(n)与
∑
p
∈
Prime
,
p
≤
n
∑
k
=
1
∞
1
k
p
k
\sum\limits_{p\in\text{Prime},p\le n}\sum\limits_{k=1}^{\infty}\frac{1}{kp^k}
p∈Prime,p≤n∑?k=1∑∞?kpk1?敛散性相同,即
h
(
n
)
h(n)
h(n)发散。因此
lim
?
n
→
∞
∑
k
=
1
n
1
k
2
h
(
n
)
=
0
\lim\limits_{n\to\infty}\frac{\sum\limits_{k=1}^{n}\frac{1}{k^2}}{h(n)}=0
n→∞lim?h(n)k=1∑n?k21??=0,
c
≥
1
c\ge1
c≥1。 综上,由夹逼准则知
c
=
1
c=1
c=1。 因此,
lim
?
n
→
∞
h
(
n
)
ln
?
(
ln
?
n
)
=
1
\lim\limits_{n\to\infty}\frac{h(n)}{\ln(\ln n)}=1
n→∞lim?ln(lnn)h(n)?=1,
h
(
n
)
=
Θ
(
ln
?
(
ln
?
n
)
)
h(n)=\Theta(\ln(\ln n))
h(n)=Θ(ln(lnn)),埃拉托斯特尼筛法的时间复杂度为
O
(
n
log
?
(
log
?
(
n
)
)
)
O(n\log(\log(n)))
O(nlog(log(n)))。
|