首页 > 编程语言 >AcWing 算法提高课 筛质数

AcWing 算法提高课 筛质数

时间:2022-10-01 14:11:13浏览次数:43  
标签:质数 算法 sqrt 因子 分解 阶乘 例题 AcWing

例题:

1、求区间中的质数

筛质数是O(n)或O(nloglogn)

但是如果n很大,则会超时。

 

但是如果要筛[l, r]区间中的全部质数

且l和r比较大,但是r-l比较小时。

可以用O(nloglogn)的时间筛出,其中n=sqrt(N)。可以降低时间复杂度。

 

有对一个数n,如果是合数,则一定有小于sqrt(n)的一个质因子。

利用埃氏筛法的思想:

可以先预处理出sqrt(N)内的全部质数,再用这些质数去筛[l, r]之间的数。

注意不要把质数本身筛掉,且注意处理1

例题:https://www.acwing.com/problem/content/submission/198/

 

2、求一个阶乘的分解质因子结果

由于阶乘很大,直接分解质因子不行。

但是如果阶乘运算n!的n比较小的话。

可以考虑先筛出1-n中全部的质数,

然后用全部质数p去算1-n中的p的倍数,其中有多少p因子

注意,由于可能会有多个p因子,可以考虑用p、p^2、p^3...筛多次,或者可以在用p筛的时候,直接用除法统计有几个p因子

并累加(因为阶乘会把1-n全部数乘起来,故其质因子分解的结果可以视为将每个数的分解质因子结果相加)。

例题:https://www.acwing.com/problem/content/199/

标签:质数,算法,sqrt,因子,分解,阶乘,例题,AcWing
From: https://www.cnblogs.com/ydUESTC/p/16747148.html

相关文章

  • 某公司计算机算法体系架构
    当前笔者主要从事的是供应链2B方向的工程职位.简单说一下我对于当前公司的一些思考和对公司基础能力建设的一些想法.1.个人思考我个人认为所有的工程职位只有两种类......
  • 弗洛伊德算法
    简介和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系......
  • 克鲁斯卡尔算法
    应用场景某城市新增7个站点(A,B,C,D,E,F,G),现在需要修路把7个站点连通各个站点的距离用边线表示(权),比如A–B距离12公里问:如何修路保证各个站点都能连通,并且总......
  • 迪杰斯特拉算法
    应用实例有7个村庄(A,B,C,D,E,F,G),现在有六个邮差,从G点出发,需要分别把邮件分别送到A,B,C,D,E,F六个村庄各个村庄的距离用边线表示(权),比如A–B距离5公......
  • 普里姆算法
    应用场景现有7个村庄(A,B,C,D,E,F,G),现在需要修路把7个村庄连通各个村庄的距离用边线表示(权),比如A–B距离5公里如何修路保证各个村庄都能连通,并且总的修建公......
  • 贪心算法
    应用实例假设存在如下表的需要付费的广播台,以及广播台信号可以覆盖的地区。如何选择最少的广播台,让所有的地区都可以接收到信号思路分析目前并没有算法可以快速计算得到准......
  • 暴力匹配算法、KMP算法
    应用实例暴力匹配算法代码实现publicclassViolenceMatch{publicstaticvoidmain(String[]args){//测试暴力匹配算法Stringstr1="硅硅谷尚硅谷你尚硅......
  • 动态规划算法
    应用实例有一个背包,容量为4磅,现在将如下商品装入背包,要求装入的背包的总价值最大,并且重量不超出,且物品不能重复#当前为01背包#如果为完全背包则放入物品可重复简介思路分......
  • 非递归的方式实现二分查找算法
    简介二分查找法的运行时间为对数时间O(㏒₂n),即查找到需要的目标位置最多只需要㏒₂n步,假设从[0,99]的队列(100个数,即n=100)中寻到目标数30,则需要查找步数为㏒₂100,即最......
  • React面试:谈谈虚拟DOM,Diff算法与Key机制
    1.虚拟dom原生的JSDOM操作非常消耗性能,而React把真实原生JSDOM转换成了JavaScript对象。这就是虚拟Dom(VirtualDom)每次数据更新后,重新计算虚拟Dom,并和上一次生成的虚拟......