IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【算法/数论】埃拉托斯特尼筛法时间复杂度的证明 -> 正文阅读

[数据结构与算法]【算法/数论】埃拉托斯特尼筛法时间复杂度的证明

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

埃拉托斯特尼筛法(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??+?+?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?=pPrime,pn?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)=pPrime?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?+?=pPrime?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?+?)=?pPrime?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?)=pPrime?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 nlim?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=1n?k1?=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=1n?k1?lnn+M。设 δ = ln ? n ? ∑ k = 1 n 1 k \delta=\ln n-\sum\limits_{k=1}^{n}\frac{1}{k} δ=lnn?k=1n?k1?,则 ? 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=1n?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⑧ nlim?ln(lnn)ln(k=1n?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)=pPrime,pn?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) nlim?ln(k=1?k1?)=nlim?z(n)再由 ⑧ ⑧ ,知 lim ? n → ∞ z ( n ) ln ? ( ln ? n ) = 1 \lim\limits_{n\to\infty}\frac{z(n)}{\ln(\ln n)}=1 nlim?ln(lnn)z(n)?=1所以只需证 lim ? n → ∞ h ( n ) z ( n ) = 1 \lim\limits_{n\to\infty}\frac{h(n)}{z(n)}=1 nlim?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)=pPrime,pn?k=1?kpk1?=(pPrime,pn?p1?)+k=2?k1?(pPrime,pn?pk1?)=h(n)+k=2?k1?(pPrime,pn?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 cnlim?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)pPrime,pn?k=1?pk1?=pPrime,pn?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}} cnlim?pPrime,pn?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)}} cnlim?pPrime,pn?p1?+pPrime,pn?p(p?1)1?h(n)?=nlim?h(n)+pPrime,pn?p(p?1)1?h(n)?=nlim?1+h(n)pPrime,pn?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)} nlim?h(n)pPrime,pn?p(p?1)1??nlim?h(n)pPrime,pn?p2p?1??=21?nlim?h(n)pPrime,pn?p21??nlim?h(n)k=1n?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} nlim?z(n)=pPrime,pn?k=1?kpk1?一定是发散的,因为 lim ? n → ∞ ln ? ( ln ? n ) = + ∞ \lim\limits_{n\to\infty}\ln(\ln n)=+\infty nlim?ln(lnn)=+,而 lim ? n → ∞ z ( n ) ln ? ( ln ? n ) = 1 \lim\limits_{n\to\infty}\frac{z(n)}{\ln(\ln n)}=1 nlim?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 cnlim?pPrime,pn?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} pPrime,pn?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 nlim?h(n)k=1n?k21??=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 nlim?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)))

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:50:35  更:2022-03-30 18:52:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 1:48:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码