先看这道题
洛谷P1217回文质数
对于这道题,普通的暴力模拟会TLE,所以得寻求改进。这里我学会了两种方法;

第一种:线性筛法
这种算法的核心思想就是:任何一个合数都可以由质数相乘得到
下面就是核心代码,吃透了核心代码就可以在其中添加点细节,然后就可以拿去解决问题了

//这里需要开多大的数组取决自己
bool isprime[10000];
int prime[10000];
int b;//上限
for(int i=1;i<=b;i++)
{isprime[i]=true;//这里这种标记,可以联想“桶排序”那里的标记方法
}for(int i=2;i<=b;i++)
{//利用if语句将找到的质数存起来if(isprime[i]){s++;prime[s]=i;}//筛掉非质数for(int j=1;j<=s;j++)//遍历prime数组 {isprime[i*prime[j]]=false;//这样做就不会被放入存放质数的数组中去了}}

第二种:埃氏筛法
其核心思想就是:将质数的倍数筛掉。比如对于质数2,2的倍数4、6、8等一定不是质数数;对于质数3后,3的倍数6、9、12等一定不是质数。
其核心代码:

bool isprime[10000];
int prime[10000];
int b;//上限
int s=0;
for(int i=1;i<=b;i++)
{isprime[i]=true;//同线性筛那里一样
}
for(int i=2;i<=b;i++)
{if(isprime[i]){    prime[s++]=i;//保存质数for(int j=i*2;j<=b;j+=i)//遍历质数的倍数{isprime[j]=false;//筛掉质数i的倍数}}
}

总结:两种方法各有各的好,使用哪种方法更好具体看题目本身。

时间仓促,代码编写可能有点问题,直接在编辑文章时敲的,没有编译过。不过大致思路就是这样。

找素数(质数):线性筛法和埃氏筛法相关推荐

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

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

  2. 【算法学习】找素数的几种算法: 简单穷举, 埃氏筛法, 欧氏筛法, 从O(n2)到O(n)

    文章简介 本文记录寻找素数的几种算法, 本文中的O()没有指明默认表示时间复杂度 代码使用Java 目录 文章简介 正文 穷举计数法(判断O(n)) 优化: 布尔+break(判断 小于O(n)) 优 ...

  3. 快速求素数表——埃氏筛法与欧拉筛法

    快速求素数表--埃氏筛法与欧拉筛法 快速求素数表埃氏筛法与欧拉筛法 埃氏筛法 埃氏筛法原理 埃氏筛法时间复杂度 埃氏筛法代码求出1000000以内的素数并且输出n个素数 欧拉筛法 欧拉筛法原理 欧拉筛 ...

  4. java 埃氏筛法_筛法

    素数与最大公因子2021-02-12 17:32:04 素数 定义: 素数是大于 \(1\) 的正整数, 并且除了 \(1\) 和它本身外不能被其他正整数整除. 素数的数量: 不超过 \(N\) 的素 ...

  5. 素数的线性筛法java,埃氏筛 线性筛(欧拉筛) 算法解析

    埃氏晒 埃拉托斯特尼筛法,简称埃氏晒,是一种用来求自然数n以内的全部素数. 他的基本原理是,如果我们要获得小于n的所有素数,那就把不大于根号n的所有素数的倍数剔除. 埃氏晒的原理很容易理解,一个合数, ...

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

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

  7. 素数基本(埃氏筛法/线性筛法)

    一.检查n是否为素数 最简单思路:所有可能的因数全部试一遍. int gg(int n) {for(int i=2;i<n;i++){if((n%i)==0)return 0;//有因数就不是素 ...

  8. 质数乘积(大数乘法+埃氏筛法)

    质数乘积 题目描述 TWQ每天疯狂的刷题,今天又刷到一道水题,于是赶紧来拿一血吧,给你一个正整数n,求小于n的数中所有质数的乘积,输入有多组测试用例,0为结束标志,所有质数的乘积初始值为0. 输入 正 ...

  9. 埃拉托色尼筛选法巧解质数问题(埃氏筛法求解素数问题)

    背景: 素数(即质数)问题是老问题了,程序员面试问题,大小比赛的热门题. 比如 最简单的判断素数问题,或者计算素数的个数,等等. 简单的判断素数函数: 素数的定义:指在大于1的整数中,只能被1和它本身 ...

最新文章

  1. python中color的用法_python - 如何为热图(使用plt.pcolor创建)中的NaN单元分配特定的颜色或图案,并使其显示在颜色栏中(图colorbar) - 堆栈内存溢出...
  2. 判断文件是否为可执行程序
  3. git仓库迁移(全部分支)
  4. PopupWindow的基本使用
  5. IntelliJ IDEA 15快捷键大全
  6. php 面向过程分页,无JS,完全php面向过程,数据分页
  7. 获取Dataset前几条数据的两种方法
  8. [oracle] 组织架构退格显示 connect by
  9. 计算机数据库原理试题,计算机科学与技术专业《数据库原理》模拟试题(B)
  10. miui12怎么自定义开机动画_MIUI12相机特色功能须知,新增魔法分身与相机上滑启动更多模式...
  11. HDU2524 矩形A + B【组合计算】
  12. SQL Server编写存储过程小工具(三)
  13. 远程控制软件用户群分析
  14. 计算机网络和lnternet的课件,Computer Networks and Internets《计算机网络与因特网》课件.ppt...
  15. c语言查看错误步骤命令,C语言之预处理命令
  16. 心理测试软件需求分析报告,大学生心理测试软件心理测评档案管理系统
  17. 白苹果修复_ReiBoot Pro——iOS系统修复软件
  18. 测试人员必备:常用自动化测试工具
  19. 一周活动速递|深入浅出第8期;Meetup成都站报名进行中
  20. 掉线(自创--根据刘德华《今天》歌词改编)

热门文章

  1. python爬虫(案例)——豆瓣读书爬虫
  2. 看望月新一证明Abc猜想的正确姿势
  3. 【单片机仿真项目】外部中断0控制8个发光二极管闪烁
  4. 2021-01-19
  5. 在Kmplayer中添加sub字幕过大而挡住视频的解决方法
  6. 端口被占用,简单快捷的解决方法
  7. QT武林秘籍——我在QT中遇到的那些坑
  8. 自动装箱和自动拆箱的陷阱
  9. Arcengine IElement 的节点编辑
  10. solo 电路 耳放_SOLO耳放分析,带PCB布线