线性筛
算法思路
-
利用线性筛判断如果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 =