扩大
缩小

数学题做题记录

以下题目方括号内的数字为题目难度

筛法

  • 给定正整数 $n$,求 $1$ 到 $n$ 所有质数。
  $(n \le 10^5)$ 「1.1」
  $(n \le 2 \times 10^6)$ 「1.5」
  $(n \le 2 \times 10^7)$ 「2.1」
 
  做法一:对于每个数字用 $O(\sqrt{n})$ 的复杂度来判断这个数是否有不止两个约数,复杂度 $O(n \sqrt n)$。
  做法二:如果找到一个数是质数,那么把这个质数的所有倍数(不含自己)标记为合数,以此类推,复杂度 $O(n \log \log n)$。
  做法三:将做法二优化,保证一个质数只需筛掉一个合数,复杂度 $O(n)$。
  做法四:欧拉筛法。
posted @ 2020-05-16 23:46  HoshizoraZ  阅读(168)  评论(0)    收藏  举报