线性筛
算法思路
-
利用线性筛判断如果N是素数,那么其因子的个数为2.
-
一个非素数N可以写成素因子幂次连乘的形式.

- 列如 12 的因子个数为 6 个, 可以用素因数的(幂次+1)乘素因数的(幂次+1) : 对素因数的不同取法都是12的因子.

-
首先先完成线性筛函数,然后改写
#define MAX_N 1000 int prime[MAX_N + 5] = { 0}; void init() { for (int i = 2; i <= MAX_N; i++) { if (!prime[i]) { prime[++prime[0]] = i // 和之前一样,将素数按顺序存在prime里,prime[0]用来计个数; } for (int j =

本文介绍了如何使用线性筛算法求解一个数的因子个数。通过分析素数和合数的性质,得出合数的因子个数可以通过其互素因数的因子个数相乘得到。在实现过程中,定义额外数组记录每个数的因子个数,并利用最小素因子的幂次来优化计算。最终,该算法的时间复杂度为O(n).
最低0.47元/天 解锁文章
1198

被折叠的 条评论
为什么被折叠?



