1 条题解
-
0
[蓝桥杯青少年组省赛 2023] 质因数的个数(Maximum Prime Factor Count) 题解
思路分析
注意本题统计的是计重数的质因数总个数 (如 计为 个, 计为 个)。由于 ,逐个做 试除会超时;使用欧拉线性筛在 时间内递推:对质数 有 ,筛合数
i * p时有 (用uint8_t数组仅需 内存),最后在 上取最大值即可。参考代码
#include <algorithm> #include <cstdint> #include <iostream> using namespace std; const int MX = 10000005; uint8_t omegaArr[MX]; int primes[700000]; int pCnt = 0; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N, M; if (!(cin >> N >> M)) return 0; for (int i = 2; i <= M; ++i) { if (omegaArr[i] == 0) { omegaArr[i] = 1; primes[pCnt++] = i; } for (int j = 0; j < pCnt; ++j) { long long v = 1LL * i * primes[j]; if (v > M) break; omegaArr[v] = uint8_t(omegaArr[i] + 1); if (i % primes[j] == 0) break; } } int ans = 0; for (int i = N; i <= M; ++i) { if (omegaArr[i] > ans) ans = omegaArr[i]; } cout << ans << "\n"; return 0; }
- 1
信息
- ID
- 8567
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者