![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
素数筛算法
文章平均质量分 56
OnlyFeiger
青青子衿,悠悠我心。
展开
-
素数筛进阶(二)线性筛算法
求一个数的最小素因子 #include<stdio.h> #define MAX_N 1000 int prime[MAX_N + 5]; void init() { for (int i = 2; i <= MAX_N; ++i) { if prime[i] continue; prime[++prime[0]] = i; for (int j = i ; j <= MAX_N; j+=i){ if (p原创 2021-02-04 16:54:58 · 175 阅读 · 0 评论 -
线性筛进阶(三): 求N的因子个数
线性筛 算法思路 利用线性筛判断如果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++) {原创 2021-02-04 16:26:05 · 1400 阅读 · 0 评论 -
素数筛算法基础(一)
数组声明与初始化 数组就是相同类型一组变量的集合.是变量就会在内存上占用一定的空间大小; int a ; //变量a 占 4个字节(32位); int a[100];// a[100]占 400个连续的空间; 求素数(关于数组的算法框架) 思路 初始化一个数组 , 元素全部标记为 0; 用 2 - n 的倍数去标记合数为1, 没有被标记过的数就没有因数,即为素数; 优化: 这里我们可以从1 遍历到 根号 n; 因为 列如 9 = 3*3; 一个数的因数是成对存在的,判原创 2021-01-25 21:37:34 · 153 阅读 · 1 评论