【算法/数论】埃拉托斯特尼筛法时间复杂度的证明

一、埃拉托斯特尼筛法简介

埃拉托斯特尼筛法(Sieve of Eratosthenes)是一种能快速求出 1 ∼ n 1\sim n 1n内所有质数的方法。埃拉托斯特尼就是用很聪明的方法测出地球周长的那个希腊人。算法的过程是:枚举 1 ∼ n 1\sim n 1n中的每个数 i i i,如果它没有被前面的数标记过,则 i i i为质数,此时标记它的 2 , 3 , 4 ⋯ 2,3,4\cdots 2,3,4倍为合数。C++代码如下:

bool isprime[MAXN]; // isprime[i]表示i是否为质数
int prime[MAXN]; // 筛出的质数列表
int cnt; // 质数个数
int n; // 上界

void Eratosthenes() // 埃拉托斯特尼筛法:1~n
{
    memset(isprime, true, sizeof(isprime));
    // 先全部设为质数
    for(int i = 2; i <= n; ++i)
    // 枚举i从2到n
    {
        if(isprime[i]) // 没有被标记为合数
        {
            prime[++cnt] = i; // 加入质数列表
            for(int j = i + i; j <= n; j += i)
            // j取2i, 3i, 4i, ...一直到n
                isprime[j] = false;
                // 标记i的倍数为合数
        }
    }
    // 现在prime[1] = 2, prime[2] = 3, prime[3] = 5,
    // prime[4] = 7, prime[5] = 11, ...
}

可以看出,对于每个质数 i i i,我们都要将 i i i的倍数标记为合数。而 i i i的倍数在 1 ∼ n 1\sim n 1n内共有 ⌊ 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++pmn其中 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++pm1)这里所做的的近似误差不超过 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++pm1=pPrime,pnp1,则我们要证明的就是 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 s + ⋯ ① \zeta(s)=\sum\limits_{n=1}^\infty n^{-s}=\frac{1}{1^s}+\frac{1}{2^s}+\frac{1}{3^s}+\frac{1}{4^s}+\cdots\quad① ζ(s)=n=1ns=1s1+2s1+3s1+4s1+这里用 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)=1s2s1+2s2s1+3s2s1+4s2s1+=2s1+4s1+6s1+8s1+ ① − ② ①-② ,偶数项消掉,留下奇数项得 ( 1 − 1 2 s ) ζ ( s ) = 1 1 s + 1 3 s + 1 5 s + 1 7 s + ⋯ ③ \left(1-\frac{1}{2^s}\right)\zeta(s)=\frac{1}{1^s}+\frac{1}{3^s}+\frac{1}{5^s}+\frac{1}{7^s}+\cdots\quad③ (12s1)ζ(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}\left(1-\frac{1}{2^s}\right)\zeta(s)=\frac{1}{3^s}+\frac{1}{9^s}+\frac{1}{15^s}+\frac{1}{21^s}+\cdots\quad④ 3s1(12s1)ζ(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 + ⋯ ⑤ \left(1-\frac{1}{3^s}\right)\left(1-\frac{1}{2^s}\right)\zeta(s)=\frac{1}{1^s}+\frac{1}{5^s}+\frac{1}{7^s}+\frac{1}{13^s}+\cdots\quad⑤ (13s1)(12s1)ζ(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 \left(1-\frac{1}{2^s}\right)\left(1-\frac{1}{3^s}\right)\left(1-\frac{1}{5^s}\right)\left(1-\frac{1}{7^s}\right)\left(1-\frac{1}{11^s}\right)\cdots\zeta(s)=1 (12s1)(13s1)(15s1)(17s1)(111s1)ζ(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)=pPrime1ps11这就是欧拉乘积公式

三、问题求解

在欧拉乘积公式中代入 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+=pPrime1p11两边取对数得 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+)=pPrimeln(1p1)考虑将函数 f ( x ) = ln ⁡ ( 1 − x ) f(x)=\ln(1-x) f(x)=ln(1x)展开成麦克劳林级数 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(1x)=x2x23x3nxn=k=1kxk 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=1k1)=pPrimek=1kpk1回顾一下我们要证明的结论: 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++pm1=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 nlimln(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=1nk1=lnn+O(1),亦即 ∃ M > 0 \exists M>0 M>0,使得 ∀ n ∈ N + \forall n\in\mathbb N^+ nN+,都有 ∑ k = 1 n 1 k ≤ ln ⁡ n + M \sum\limits_{k=1}^{n}\frac{1}{k}\le\ln n+M k=1nk1lnn+M。设 δ = ∑ k = 1 n 1 k − ln ⁡ n \delta=\sum\limits_{k=1}^{n}\frac{1}{k}-\ln n δ=k=1nk1lnn,则 ∀ n ∈ N + \forall n\in\mathbb N^+ nN+ δ < 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 ξ>n1,所以有 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=1nk1=lnn+δ,故 lim ⁡ n → ∞ ln ⁡ ( ∑ k = 1 n 1 k ) ln ⁡ ( ln ⁡ n ) ≤ lim ⁡ n → ∞ ln ⁡ ( ln ⁡ n ) + M ln ⁡ ( ln ⁡ n ) = 1 \lim\limits_{n\to\infty}\frac{\ln\left(\sum\limits_{k=1}^{n}\frac{1}{k}\right)}{\ln(\ln n)}\le\lim\limits_{n\to\infty}\frac{\ln(\ln n)+M}{\ln(\ln n)}=1 nlimln(lnn)ln(k=1nk1)nlimln(lnn)ln(lnn)+M=1又显然 lim ⁡ n → ∞ ln ⁡ ( ∑ k = 1 n 1 k ) ln ⁡ ( ln ⁡ n ) ≥ lim ⁡ n → ∞ ln ⁡ ( ln ⁡ n ) ln ⁡ ( ln ⁡ n ) = 1 \lim\limits_{n\to\infty}\frac{\ln\left(\sum\limits_{k=1}^{n}\frac{1}{k}\right)}{\ln(\ln n)}\ge\lim\limits_{n\to\infty}\frac{\ln(\ln n)}{\ln(\ln n)}=1 nlimln(lnn)ln(k=1nk1)nlimln(lnn)ln(lnn)=1故由夹逼准则知 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⑧ nlimln(lnn)ln(k=1nk1)=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)=pPrime,pnk=1kpk1,将 ⑦ ⑦ 表示为极限形式: 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) nlimln(k=1k1)=nlimz(n)代入 ⑧ ⑧ ,有 lim ⁡ n → ∞ z ( n ) ln ⁡ ( ln ⁡ n ) = 1 \lim\limits_{n\to\infty}\frac{z(n)}{\ln(\ln n)}=1 nlimln(lnn)z(n)=1所以只需证 lim ⁡ n → ∞ h ( n ) z ( n ) = 1 \lim\limits_{n\to\infty}\frac{h(n)}{z(n)}=1 nlimz(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 ) \begin{aligned}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)\end{aligned} z(n)=pPrime,pnk=1kpk1= pPrime,pnp1 +k=2k1 pPrime,pnpk1 =h(n)+k=2k1 pPrime,pnpk1 其中第二项显然为正,故 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 cnlimh(n)h(n)=1
(2) 对分母进行放大,注意到 1 k p k ≤ 1 p k \frac{1}{kp^k}\le\frac{1}{p^k} kpk1pk1,且 ∑ k = 1 ∞ 1 p k = 1 p − 1 \sum\limits_{k=1}^{\infty}\frac{1}{p^k}=\frac{1}{p-1} k=1pk1=p11,有 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)pPrime,pnk=1pk1=pPrime,pnp11,因此 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}} cnlimpPrime,pnp11h(n)显然有 1 p − 1 = 1 p + 1 p ( p − 1 ) \frac{1}{p-1}=\frac1p+\frac{1}{p(p-1)} p11=p1+p(p1)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 ) \begin{aligned}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)}}\end{aligned} cnlimpPrime,pnp1+pPrime,pnp(p1)1h(n)=nlimh(n)+pPrime,pnp(p1)1h(n)=nlim1+h(n)pPrime,pnp(p1)11其中 lim ⁡ n → ∞ ∑ p ∈ Prime , p ≤ n 1 p ( p − 1 ) h ( n ) ≤ lim ⁡ n → ∞ ∑ p ∈ Prime , p ≤ n 1 p p 2 h ( n ) = 2 lim ⁡ n → ∞ ∑ p ∈ Prime , p ≤ n 1 p 2 h ( n ) ≤ 2 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)}=2\lim\limits_{n\to\infty}\frac{\sum\limits_{p\in\text{Prime},p\le n}\frac{1}{p^2}}{h(n)}\le2\lim\limits_{n\to\infty}\frac{\sum\limits_{k=1}^{n}\frac{1}{k^2}}{h(n)} nlimh(n)pPrime,pnp(p1)1nlimh(n)pPrime,pnp2p1=2nlimh(n)pPrime,pnp212nlimh(n)k=1nk21分子的和式是收敛的: ∑ k = 1 ∞ 1 k 2 = ζ ( 2 ) = π 2 6 \sum\limits_{k=1}^{\infty}\frac{1}{k^2}=\zeta(2)=\frac{\pi^2}{6} k=1k21=ζ(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} nlimz(n)=pPrime,pnk=1kpk1一定是发散的,因为 lim ⁡ n → ∞ ln ⁡ ( ln ⁡ n ) = + ∞ \lim\limits_{n\to\infty}\ln(\ln n)=+\infty nlimln(lnn)=+,而 lim ⁡ n → ∞ z ( n ) ln ⁡ ( ln ⁡ n ) = 1 \lim\limits_{n\to\infty}\frac{z(n)}{\ln(\ln n)}=1 nlimln(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 cnlimpPrime,pnp2h(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} pPrime,pnk=1kpk1敛散性相同,即 h ( n ) h(n) h(n)发散。
因此 lim ⁡ n → ∞ ∑ k = 1 n 1 k 2 h ( n ) \lim\limits_{n\to\infty}\frac{\sum\limits_{k=1}^{n}\frac{1}{k^2}}{h(n)} nlimh(n)k=1nk21就是有限的数除以无穷大,值为 0 0 0,代入得 c ≥ 1 c\ge1 c1
综上,由夹逼准则知 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 nlimln(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)))

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值