当前位置: 首页 > news >正文

求解连续数字的正约数集合——倍数法

求解连续数字的正约数集合——倍数法

使用规律递推优化,时间复杂度为 \(\mathcal{O}(N\log N)\) ,如果不需要详细的输出集合,则直接将 vector 换为普通数组即可(时间更快) 。

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 7;
vector<int> f[N];void divide(int n) {for (int i = 1; i <= n; ++ i)for (int j = 1; j <= n / i; ++ j)f[i * j].push_back(i);for (int i = 1; i <= n; ++ i) {for (auto it : f[i]) cout << it << " ";cout << endl;}
}
int main() {int x; cin >> x; divide(x);return 0;
}

试除法判是否是质数

标准解

\(\mathcal O(\sqrt N)\)

bool is_prime(int n) {if (n < 2) return false;for (int i = 2; i <= x / i; i++) {if (n % i == 0) return false;}return true;
}

常数优化法

常数优化,达到 \(\mathcal O(\frac {\sqrt N}{3})\)

bool is_prime(int n) {if (n < 2) return false;if (n == 2 || n == 3) return true;if (n % 6 != 1 && n % 6 != 5) return false;for (int i = 5, j = n / i; i <= j; i += 6) {if (n % i == 0 || n % (i + 2) == 0) {return false;}}return true;
}
http://www.hskmm.com/?act=detail&tid=38031

相关文章:

  • git回滚代码
  • 组合数
  • q
  • 裴蜀定理
  • 逆元
  • 扩展欧几里得 exgcd
  • 离散对数 bsgs 与 exbsgs
  • 常见数列
  • 20232314 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 【LTDC】LTDC 简介
  • 分类器案例 - -一叶知秋
  • Markdown数学公式 - -一叶知秋
  • 最大流
  • 最小割树 Gomory-Hu Tree
  • 最小割
  • 差分约束
  • 图论常见结论及例题
  • 最长路(topsort+DP算法)
  • 二分图最大匹配
  • 最短路径树(SPT问题)
  • 欧拉路径/欧拉回路 Hierholzers
  • 无源汇点的最小割问题 Stoer–Wagner
  • CF2152G
  • 染色法判定二分图 (dfs算法)
  • 链式前向星建图与搜索
  • 一般图最大匹配
  • 平面图最短路(对偶图)
  • 多源汇最短路(APSP问题)
  • 最小生成树(MST问题)
  • 缩点(Tarjan 算法)