欧拉筛法求素数
来源:互联网 发布:php <=和=< 编辑:程序博客网 时间:2024/05/19 04:54
代码
#include <stdio.h>#include <stdbool.h>bool flag[10001] = {0};int p[10001] = {0};int main(){ int i, n, cnt = 0, j; scanf("%d", &n); for (i = 2; i <= n; ++i){ if (flag[i] == 0) p[cnt++] = i; for (j = 0; j < cnt && i * p[j] <= n; ++j){ flag[i * p[j]] = 1; if (i % p[j] == 0) break; } } for (i = 0; i < cnt; ++i) i == cnt - 1 ? printf("%d\n", p[i]) : printf("%d ", p[i]); return 0;}
说明
- flag标记下标是否为合数
- p按顺序存放素数
- flag[i * p[j]] = 1筛掉i这一素数的素数倍数。
- 若i能整除p[j]则跳出循环,等到p[j]==i时再筛去i*p[j]这个数。即仅在合数的最大因子作为乘数时筛去这一合数。
- 时间复杂度O(n)
阅读全文
0 0
- 欧拉筛法求素数
- 欧拉筛法求素数
- 使用欧拉筛法求素数和
- 欧拉筛法求素数(模板)
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- Java小游戏之推箱子游戏
- java中static的用法
- K-近邻(kNN)算法
- 不是技术牛人,如何拿到国内IT巨头的Offer
- codeforces 724D 思维
- 欧拉筛法求素数
- Semaphore -- 同步辅助类3
- Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
- 新的平台,新的起点
- 备份和多终端更新hexo博客步骤
- 遗传算法笔记备忘录(整理版)
- 欢迎使用CSDN-markdown编辑器
- JavaScript--html标签注意事项回顾大总结
- java插入mysql中的数据变成问号和修改my-default.ini不生效;