匹配第质数个元素的 CSS 选择器长度

之前回答过这么一道题: https://segmentfault.com/q/10...

提问者问到,

nth-child 的值可以是包含 n 的线性公式,也可以是 odd 和 even 表示奇数行和偶数行. 然而素数本身是没有规律的, 请问怎么实现素数行和合数行分别设置不同的背景色?

现在假设我们已知有不大于 N 个元素需要匹配,求选择器长度的复杂性。

这是我当时的答案:

tr{background:#fff;}
tr:nth-of-type(1){background:#eee} /* 1 is neither a prime nor a composite number. */
tr:nth-of-type(2n+4),tr:nth-of-type(3n+6),tr:nth-of-type(5n+10){background:#eaa}

JSFiddle: https://jsfiddle.net/qdzruq16/3/

其中最后一行选择器为所有 tr:nth-of-type(pn+2p), 其中 p 为不大于
$$ sqrt{N} $$ 的所有质数。

现在设函数
$$ pi(n) $$ 表示不大于 n 的质数个数

容易看出,对于 N 个元素,采用这种方法匹配所有质数所需的选择器的个数至少为
$$ 2+pi(sqrt{N}), $$

也就是
$$ O(pi(sqrt{N})) $$ 的复杂性。

然而我们在算法课上貌似没学过这样的式子。 Don’t worry. 根据质数定理 https://en.wikipedia.org/wiki... 我们可以把它变成更加熟悉的形式。

质数分布的渐近定律是这样说的,
$$ lim_{xtoinfty}frac{pi(x)}{x/log(x)}=1 $$

i.e.,
$$ pi(x)simfrac{x}{log x}. $$

把上式代入可以得到我们的选择器长度复杂度为
$$ O(sqrt{N}/log sqrt{N}), $$

由于
$$ log sqrt{N}=frac{1}{2}log N, $$

故我们化简后的选择器长度复杂性为:

$$ O(sqrt{N}/log N). $$

有任何错误欢迎指出。。。/* 反正也没人看 */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值