两个 GCD 经典问题

相当 Trivial 的一篇东西。

[ABC177E] Coprime

给定 \(n\) 个数 \(a_{1 \sim n}\),值域为 \(V\)。求:

  • 是否全部互质
  • 是否两两互质

问题 1:是否全部互质

即求 \(\gcd\limits_{i=1}^n a_i\) 是否为 \(1\)

直接 \(1 \sim n\) 辗转相除求 \(\gcd\)

时间复杂度 \(O(n + \log V)\)。(有些反直觉!)

问题 2:是否两两互质

\(a\) 开一个桶 \(c\)

枚举 \(d\),暴力求 \([\sum\limits_{i \times d \le V} c_i \ge 2]\)。根据调和级数的结论,时间复杂度 \(O(n + V \log V)\)

优化:线性筛筛出 \(V\) 以内质数。枚举质数 \(p\),暴力求 \([\sum\limits_{i \times p \le V} c_i \ge 2]\)

根据质数倒数和的结论,时间复杂度 \(O(n + V \log \log V)\)

参考资料

posted @ 2024-06-12 22:10  August_Light  阅读(74)  评论(0)    收藏  举报