当前位置: 首页 > news >正文

怎么在自己做的网站上发视频/百度知道首页官网

怎么在自己做的网站上发视频,百度知道首页官网,嫩草文化传媒有限公司的成立时间,专业微网站电话号码线性素数筛也算是一种基本的算法吧,和背包一样,必须要做到深入理解其原理,并且能快速打出代码来。 两个大前提: 1. 自然数中,1既不是素数也不是合数。(小学知识) 2. 一个合数一定能分解成一个…

线性素数筛也算是一种基本的算法吧,和背包一样,必须要做到深入理解其原理,并且能快速打出代码来。

两个大前提:

1. 自然数中,1既不是素数也不是合数。(小学知识)

2. 一个合数一定能分解成一个素数和另一个数相乘。(这个我不能证明,但是科学应该不会有错)

 

先从普通的思路谈起。

如果问你一个数是不是素数,那你一定是for循环一下,看看有没有数能够整除它。

现在,如果我们已经知道一个数是素数了,那么这个数的k倍(k>=2),一定是合数。(这个无序任何证明)

所以一个很简单的想法就是每找到一个素数,我们就把它的k倍(k>=2)都标记为合数。所以我们需要开一个数组记录有哪些素数。

这里我们用prime[]数组来记录素数。用bool类型 isprime[]来记录一个数到底是不是素数。

按这个思路,我们可以先写一下初步的代码。

int prime[maxn],total;
bool isprime[maxn];
void first(int size){memset(isprime,1,sizeof(isprime));//注意这里isprime是布尔类型,一个字节,所以我可以赋值为1,如果是int类型,则不能赋值为1。isprime[1]=false;//1不是素数.for(int i=2;i<size;i++){if(isprime[i]){prime[++total]=i;//记录素数}for(int j=1;j<=total&&prime[j]*i<size;j++) //这里的i表示素数的多少倍{//也就是说每经历一个i,就要遍历当前已经找到的素数。isprime[i*prime[j]]=0;}}
}

但是你会发现复杂度不是o(n)。所以这里还需要一些优化。

我们来看一个很简单的例子:

当i=9时,当前已有的素数有2,3,5,7。

此时我将进入二重循环,一次将 2*9=18,3*9=27,5*9=45,7*9=63 标记为合数。

但是有个问题,5*9 等价于3*15,也就是说当i=15时,也会标记一次。这明显重复了。同理,7*9等价于3*21,当i=21时,也会重复标记一次。

多观察几组数据后,你会发现,其实只要找到i%prime[j]==0时,我们就可以跳出循环了,因为后面的素数的倍数,我们可以留到后面进行标记。那么这样的猜想到底对不对?下面看一个结论和证明。

假设 a,d为合数,b,c为素数  其中b>c.

a= b*c*d

令e=c*d(显然e也是合数)

令f=d*b(也是合数)

a=f*c  (f是合数,c是素数)。对比第一个等式,a=b*c*d  。我们发现a可以有这两种不同的表示方法,不同的是我们可以用一个较小的素数*一个较大合数  来代替   一个较大素数*一个较小合数(a=b*(c*d))。

所以有下面的结论:

一个比合数大的素数和该合数的乘积可以用一个更大的合数和比其小的素数相乘得到。

 那么如何优雅的在代码里运用这个结论呢?

答案就是只要找到一个i%prime[j]==0 我们就跳出循环,因为后面总有更大的合数和一个小的素数相乘,满足我们需要标记的数。

最终代码:
 

void getPrime(int size)
{memset(isprime,1,sizeof(isprime));isprime[1]=false;for(int i=2;i<size;i++){if(isprime[i]){prime[++total] = i;}for(int j=1;j<=total&&i*prime[j]<=size;j++){isprime[i*prime[j]]=false;if(i%prime[j]==0){break;}}}
}

记在脑子里的才是自己的,模板都是虚假的。

http://www.lbrq.cn/news/1071505.html

相关文章:

  • 厦门规划建设网站/泉州seo代理计费
  • 有什么网站可以做援交/买外链有用吗
  • 房地产市场需求分析/泰州百度关键词优化
  • 百度免费建个人网站/国外网站排名 top100
  • 东莞建站网站建设产品推广/白帽优化关键词排名seo
  • 个人网站设计论文的结论/seo引擎搜索网站
  • 做网站沈阳/网络广告推广平台
  • 沈阳网站建设专家/厦门网站seo
  • 建设银行对公网站/百度怎么发帖做推广
  • 仿淘宝网站/漳州网络推广
  • 查商标是否被注册在哪里查/济南网络seo公司
  • 今天哈尔滨最新通告/杭州优化外包
  • 网站应如何设计/seo外链增加
  • 网站可以用视频做背景吗/程序员培训机构排名前十
  • 芍药居做网站公司/网络推广的优势有哪些
  • 做淘宝差不多的网站/汕头seo外包公司
  • wordpress better wordpress minify/网站内部优化有哪些内容
  • 初中做历史的网站/媒体网络推广价格优惠
  • wordpress 移植/seo竞争对手分析
  • 万盛经开区规划建设局网站/郑州网站关键词排名技术代理
  • 沈阳网站设计定制网站建设/程序员培训班要多少钱
  • 张家港做网站的公司/短期职业技能培训班
  • 电子商务网站流程图/搜索引擎优化大致包含哪些内容或环节
  • 泉州厦门网站建设公司/重庆seo技术分享
  • 武汉市网站建设公司/成人就业技术培训机构
  • 深圳企业网站推广/磁力天堂最佳搜索引擎入口
  • 公众号制作教程/阿里seo排名优化软件
  • 12380网站建设建议/培训心得总结
  • wordpress自製插件/优化设计答案大全英语
  • 长沙做网站那家好/百度联盟app
  • 网页操作自动化解决方案:如何用Browser-Use+CPolar提升企业运营效率
  • JVM中年轻代、老年代、永久代(或元空间)、Eden区和Survivor区概念介绍
  • 高效截图的4款工具深度解析
  • OSPF综合实验报告册
  • Git基础命令大全
  • Excel数据转化为Xmind思维导图全流程(含Word转化格式),实用