//线性筛法--有测试代码
/*
数论 - 欧拉筛法(线性筛)的解释
https://blog.csdn.net/Losk_0/article/details/87884390素数筛法详解(欧拉筛&埃氏筛)
https://blog.csdn.net/FeilingGong/article/details/83660779算法笔记(四)——欧拉筛法求素数
https://blog.csdn.net/weixin_42172676/article/details/81978475快速线性筛法的原理和值得借鉴的方法【解析算法】
https://blog.csdn.net/nuanxin_520/article/details/41207145快速线性筛法的特点就是不会重复筛除一个合数。它的原理是前提是:一个合数 i=p1*p2*...*pn, pi都是素数(2<=i<=n)pi<=pj( i<=j )p1是最小的系数。这样每一个合数就有一个确定的表示方法,不会重复。(像12=2*2*3)No.1:我们现在规定一个合数由两个数得到。NO.2:那么合数有两种。1.素数*素数=合数 2.一个最小的素数*合数=合数筛除:如果遇到i为素数,那么一个大的素数 i 乘以不大于 i 的素数,
这样筛除的数跟之前的是不会重复的,前面已经通过比i小的质数筛掉了 i为素数,前面的素数肯定不能将素数i筛掉 如果遇到i为合数,我们只认为合数由一个最小的素数*合数得到,也不会重复(就像12=2*6而不是12=3*4)则i必然可以由i前面的质数*(一个质数或合数)组成i这个数 6=2*3一般的线性筛法
https://www.cnblogs.com/KyleDeng/p/9244850.html要保证的是每个合数只被这个合数最小的质因子筛除,而且只筛一次,没有重复筛除
*/
#include <bits/stdc++.h>
using namespace std;
int const MAX_N=10000+10;
int v[MAX_N],prime[MAX_N];
int n;
void primes(int n)
{int m;memset(v,0,sizeof(v));//质数的个数 m=0;
/*
1、如果遇到i为素数,那么一个大的素数 i 乘以不大于 i 的素数,
这样筛除的数跟之前的是不会重复的2、如果遇到i为合数,我们只认为合数由一个最小的素数*合数得到,
也不会重复(就像12=2*6而不是12=3*4)
*/  for(int i=2;i<=n;++i){if( v[i]==0){//记录每个数的最小质因子 v[i]=i;  prime[++m]=i;cout<<"质数i="<<i<<endl;}for(int j=1;j<=m;++j){//i有比prime[j]更小的质因子,或者超出n的范围 if( prime[j]>v[i] || prime[j]>n/i){cout<<"prime["<<j<<"]="<<prime[j]<<" v["<<i<<"]="<<v[i]<<endl;cout<<n<<"/"<<i<<"="<<n/i<<endl;cout<<"&&&&&&&&&&&&&&&&&&&&&&&&&&&&"<<endl;break;}//prime[j]是合数i*prime[j]的最小质因子 v[i*prime[j]]=prime[j];cout<<"i="<<i<<" j="<<j<<" prime["<<j<<"]="<<prime[j]<<endl;cout<<i<<"*"<<prime[j]<<"="<<i*prime[j]<<endl;cout<<"v["<<i*prime[j]<<"]="<<v[i*prime[j]]<<endl;cout<<"-------------------------"<<endl;}//cout<<"**************************************"<<endl;        }for(int i=1;i<=m;++i){cout<<prime[i]<<endl;}}
int main( void )
{cin>>n;primes(n);return 0;
}


参考相关链接:

数论 - 欧拉筛法(线性筛)的解释

https://blog.csdn.net/Losk_0/article/details/87884390

素数筛法详解(欧拉筛&埃氏筛)

https://blog.csdn.net/FeilingGong/article/details/83660779

算法笔记(四)——欧拉筛法求素数

https://blog.csdn.net/weixin_42172676/article/details/81978475

快速线性筛法的原理和值得借鉴的方法【解析算法】
https://blog.csdn.net/nuanxin_520/article/details/41207145

一般的线性筛法
https://www.cnblogs.com/KyleDeng/p/9244850.html

线性筛法--有测试代码相关推荐

  1. 一般筛法求素数+快速线性筛法求素数

    一般筛法求素数+快速线性筛法求素数 标签: 正则表达式算法优化扩展c 2010-08-22 01:28 28738人阅读 评论(8) 收藏 举报  分类: 算法学习资料(5)  版权声明:本文为博主原 ...

  2. 存根类 测试代码 java_常规单元测试和存根–测​​试技术4

    存根类 测试代码 java 我的上一个博客是有关测试代码的方法以及讨论您做什么和不必进行测试的方法的一系列博客中的第三篇. 它基于我使用一种非常常见的模式从数据库检索地址的简单方案: -并且我提出了这 ...

  3. 一般筛法和快速线性筛法求素数 求素数的一点总结

    素数总是一个比较常涉及到的内容,掌握求素数的方法是一项基本功. 基本原则就是题目如果只需要判断少量数字是否为素数,直接枚举因子2 ..N^(0.5) ,看看能否整除N. 如果需要判断的次数较多,则先用 ...

  4. 求素数: 一般线性筛法 + 快速线性筛法

    From: http://blog.csdn.net/dinosoft/article/details/5829550 素数总是一个比较常涉及到的内容,掌握求素数的方法是一项基本功. 基本原则就是题目 ...

  5. 【蓝桥杯】欧拉定理 + 欧拉数线性筛法

    BYTHEWAY,一个素数p的原根个数=φ(p-1) ,记到嘛. 欧拉函数φ      欧拉定理是用来阐述素数模下,指数同余的性质.      欧拉定理:对于正整数N,代表小于等于N的与N互质的数的个 ...

  6. 筛质数—(朴素筛法、埃氏筛法、欧拉筛法(线性筛法))

    筛质数时首先要了解质数的定理:1~n中有  个质数 下面再来看具体算法: 1.朴素筛法: 直接把2~n-1中质数和合数的倍数都筛一遍,其代码如下所示: int primes[N],cnt=0; boo ...

  7. 找素数(质数):线性筛法和埃氏筛法

    先看这道题 洛谷P1217回文质数 对于这道题,普通的暴力模拟会TLE,所以得寻求改进.这里我学会了两种方法: 第一种:线性筛法 这种算法的核心思想就是:任何一个合数都可以由质数相乘得到 下面就是核心 ...

  8. 线性筛法求素数c语言,[算法]素数筛法(埃氏筛法线性筛法)

    一.素数筛的定义 给定一个整数n,求出[1,n]之间的所有质数(素数),这样的问题为素数筛(素数的筛选问题). 二.埃氏筛法(Eratosthenes筛法) 埃氏筛法又叫做Eratosthenes筛法 ...

  9. 【数论】质数筛选法(埃拉托色尼筛法及线性筛法)

    质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数. 在编程中,有时我们会遇到要找出一个整数范围内所有质数的情况,如果该范围很大,逐个判定该范围内所有数是否为质数(找出它是否能被大于 ...

最新文章

  1. ACL2020 | 使用强化学习为机器翻译生成对抗样本
  2. 首款移动社交购物平台“商宝”的产品简介、特点、交易服务以及入驻方式
  3. PHP/TP5 接口设计中异常处理
  4. 安装 | Windows 10下基于Anaconda平台的TensorFlow详细安装步骤
  5. 九十五、二叉树的递归和非递归的遍历算法模板
  6. LDAP 中 CN, OU, DC 的含义
  7. 通过spark-submit,本地测试SparkStreaming
  8. Java实现简易的文件的迁移器
  9. 独家总结 | KNN算法Python实现(附代码详解及注释)
  10. Prefactoring——Introduction
  11. Android开发笔记(一百六十四)仿京东首页的下拉刷新
  12. 机器学习、数据挖掘、计算机视觉等领域经典书籍推荐
  13. 思科三层+TPAC200+TP AP实现每个SSID独立网段
  14. STM32之UART、RS232、RS485通讯
  15. Linux和Windows中下载FFmpeg
  16. Dedecms 5.7 SP2后台广告管理处getshell
  17. 生成新浪短地址 php,生成新浪的短链接和还原新浪短链接类(方法)总结
  18. RN导入高德地图定位的用法实例
  19. Rabbit的字符串
  20. unity2D横版游戏跳跃实时响应

热门文章

  1. Vue还有这种骚操作?浅析几个新手常常忽略的API
  2. C# MVC 自定义ActionResult实现EXCEL下载
  3. Could not create a sandbox extension for /
  4. %@include%和jsp:include的区别
  5. 关于telnet: connect to address 190.168.6.6: No route to host 报错处理
  6. 菜鸟创业记--第四天
  7. MySql数据同步(双机热备)已正式应用上平台
  8. @初学编程的朋友们,如果你能学得这些方法,学习将会更快一步!
  9. 时间管理领域的三八原则
  10. 准程序员必看!该怎么规划自己的职业人生,看看前辈们给的建议!