文档库 最新最全的文档下载
当前位置:文档库 › 我发现了筛法的计算公式(最后稿)

我发现了筛法的计算公式(最后稿)

我发现了筛法的计算公式(最后稿)
我发现了筛法的计算公式(最后稿)

我发现了筛法的计算公式

孟庆馀[江苏连云港]

2010年5月

[摘要]:

笔者在探索中,发现了有关素数与合数关系的三条主要规律:

1、区段(区域)性的规律。

2、逐项相除四舍五入的规律。

3、随从数的规律。

根据这三条规律推导出一个公式, 它可以计算出任一已知素数后边紧跟的那个素数和任意大的一个自然数之前共有多少个素数的问题。

这个公式是:

m p =

2N -N [ (211p p +311p p -3211p p p ±…±13211-n p p p p Λ)+ ( )1111132131211-±±++-n p p p p p p p p p ΛΛ(-n p 1)]+(1-n )

[关键词]:

筛法公式、逐项相除、四舍五入、区段、随从数。

[正文]:

笔者在多年的探索中,发现了有关素数与合数关系的一些规律,根据这些规律找到了一个可以对埃拉多斯染尼氏(Eratosthenes )筛法进行计算的公式,即“筛法计算公式”(它包括计算素数和计算奇合数两个公式),计算素数的公式也可以称为“素数公式"。给素数找出一个通项表达式,即已知任一素数后边紧跟的那个素数的公式,这是一个缠绕着数学家的世界难题,时至今日都没有解决。笔者的这个公式能较好地解决任一已知素数后边紧跟的那个素数的问题。

一、“筛法计算公式”(用于计算素数)

m p =

2N -N [ (211p p +311p p -3211p p p ±…±13211-n p p p p Λ)+ ()1111132131211-±±++-n p p p p p p p p p ΛΛ(-n

p 1)]+(1-n ) …(1) 式中m p 为1~N 数列中素数个数;N 为任意大的自然数(2n p ≤N <21+n p )

;n p p p p ,,,,321K 为素数,其中:1p = 2,2p = 3,3p = 5,…,6p = 13,…;n ≥2 。

计算(1)式应先根据N 的值(1+≤n n p N p <),来确定n 的值,再根据n 值确定公式的大小(项数),最后进行计算。计算时将N 乘以括弧内各项,然后

一项一项....(121--n 次)相除,除不尽时必须四舍五入....

取整数,最后进行加减,

得出的结果是素数个数。根据定理2确认是否是素数,是第几个素数和1~N 数列中共有多少个素数。

这里n 为已知素数序号,m p 为未知(要计算的)素数个数,m p =n ,当求出m p 值后即应以n 代表素数序号。

二、“筛法计算公式” 推导的依据和过程

我们知道任何数学公式的发现、推导都离不开该数列自身固有的规律。 “先从少数的事例中摸索出规律来,再从理论上来证明这一规律的一般性,这是人们认识客观法则的方法之一。”华罗庚《数学归纳法》。那么素数序列到底有什么规律呢? 笔者的回答是没有任何规律。U. 杜德利在《基础数论》中写得清楚:“素数却如此杂乱无章地散布在整数中,甚至原因也可能说不清楚"。[德]汉斯. 拉德枚彻、[德] 奥托. 托普利茨在合著的《数学欣赏》中写到:“较自然的方法是试求任一已知素数后边紧跟的那个素数。但是由于素数组成的极端的无规则性,所作的这种尝试最后都失败了。" 在素数序列上找不到规律, 那么可否从合数序列上去寻找规律呢?因为素数与合数是相辅相成、相互依存的。笔者通过摸索发现合数序列是有规律的, 我们可以通过合数的规律来研究、了解素数及其与合数的关系。合数的有规律与素数的无规律好比是筛法的筛子,筛眼的大小我们用已知素数来编是有规律的,而且从筛眼大的到筛眼小的我们可以编n 种,筛掉的合数是有规律的(根据筛眼的大小知道),而留在筛子里的素数是没有规律的一样。

笔者通过大量事例摸索出三条主要规律:

第一、区段(区域)性的规律。

合数随着区段的增加其规律也在变化,在同一区段内合数的规律是一样的。

区段是以前一个素数的平方到后一个素数的平方来划分。用符号 2n p ≤N <21+n p 或

1+≤n n p N p <表示。这是奇合数最基本的一条规律。这个规律两千多年前已经被人们发现。

第二、逐项相除四舍五入的规律。

在两数相除时一定要一项一项....相除, 除不尽时必须而且只能四舍五入取整......数.

。这是关键性的一条规律。 第三、随从数的规律。(注:“随从数" 也叫后继数,就是紧接在某一个自然数后面的一个数。例如,1的随从是2,2的随从是3,3的随从是4 等等。)

当我们用“筛法公式” 计算奇合数时所得出的值是随从数的,那么这个随从数必定是奇合数;如果用“筛法公式”计算素数时,所得出的值是随从数的,那么这个随从数必定是素数。这是判断性的一条规律。

上面这三条规律是推导、产生“筛法计算公式”的重要基础和依据。两千多年前埃拉多斯染尼氏(Eratosthenes )根据第一条规律发现了筛法,而今天笔者根据第二、三条規律找到了筛法的计算公式。

现在就上面三条规律来分析一下合数的规律及其与素数的关系。因为偶数中只有2是素数,其余都是合数,为简便明了、少费笔墨,这里我们只讨论奇数、奇合数和素数。

从第二个素数3的平方9 起,是3 的整倍数的奇数有:9, 15, 21, 27, …… 从第三个素数5的平方25起,是5 的整倍数的奇数有:25, 35,45, 55, …… 从第四个素数7的平方49起,是7 的整倍数的奇数有:49, 63, 77, 91, ……

试验一粗集料的筛分试验

试验一T 0302-2005粗集料及集料混合料的筛分试验 1 目的与适用范围 1.1测定粗集料(碎石、砾石、矿渣等)的颗粒组成对水泥混凝土用粗集料可采用干筛法筛分,对沥青混合料及基层用粗集料必须采用水洗法试验。 1.2本方法也适用于同时含有粗集料、细集料、矿粉的集料混合料筛分试验,如未筛碎石、级配碎石、天然砂砾、级配砂砾、无机结合料稳定基层材料、沥青拌和楼的冷料混合料、热料仓材料、沥青混合料经溶剂抽提后的矿料等。 (1) 试验筛:根据需要选用规定的标准筛。 (2) 摇筛机。 (3) 天平或台秤:感量不大于试样质量的0.1% (4) 其它:盘子、铲子、毛刷等。 3 试验准备 按规定将来料用分料器或四分法缩分至表T0302-1要求的试样所需量,风干后备用。根据需要可按要求的集料最大粒径的筛孔尺寸过筛,除去超粒径部分颗粒后,再进行筛分。 表T0302-1 筛分用的试样质量 4 水泥混凝土用粗集料干筛法试验步骤 略。 5 沥青混合料及基层用粗集料水洗法试验步骤 5.1取一份试样,将试样置105℃±5℃烘箱中烘干至恒重,称取干燥集料试样的总质量(m3),准确至0.1%。 注:恒重系指相邻两次称取间隔时间大于3h(通常不少于6h)的情况下,前后两次称量之差小于该项试验所要求的称量精密度。下同。 5.2将试样置一洁净容器中,加入足够数量的洁净水,将集料全部淹没,但不得使用任何洗涤剂、分散剂或表面活性剂。 5.3用搅棒充分搅动集料,使集料表面洗涤干净他细粉悬浮在水中,但不得破碎集料或有集料从水中溅出。 5.4根据集料粒径大小选择组成一组套筛,其底部为0.075㎜标准筛,上部为2.36㎜或

我发现了筛法的计算公式(最后稿)

我发现了筛法的计算公式 孟庆馀[江苏连云港] 2010年5月 [摘要]: 笔者在探索中,发现了有关素数与合数关系的三条主要规律: 1、区段(区域)性的规律。 2、逐项相除四舍五入的规律。 3、随从数的规律。 根据这三条规律推导出一个公式, 它可以计算出任一已知素数后边紧跟的那个素数和任意大的一个自然数之前共有多少个素数的问题。 这个公式是: m p = 2N -N [ (211p p +311p p -3211p p p ±…±13211-n p p p p Λ)+ ( )1111132131211-±±++-n p p p p p p p p p ΛΛ(-n p 1)]+(1-n ) [关键词]: 筛法公式、逐项相除、四舍五入、区段、随从数。 [正文]: 笔者在多年的探索中,发现了有关素数与合数关系的一些规律,根据这些规律找到了一个可以对埃拉多斯染尼氏(Eratosthenes )筛法进行计算的公式,即“筛法计算公式”(它包括计算素数和计算奇合数两个公式),计算素数的公式也可以称为“素数公式"。给素数找出一个通项表达式,即已知任一素数后边紧跟的那个素数的公式,这是一个缠绕着数学家的世界难题,时至今日都没有解决。笔者的这个公式能较好地解决任一已知素数后边紧跟的那个素数的问题。 一、“筛法计算公式”(用于计算素数) m p = 2N -N [ (211p p +311p p -3211p p p ±…±13211-n p p p p Λ)+ ()1111132131211-±±++-n p p p p p p p p p ΛΛ(-n p 1)]+(1-n ) …(1) 式中m p 为1~N 数列中素数个数;N 为任意大的自然数(2n p ≤N <21+n p ) ;n p p p p ,,,,321K 为素数,其中:1p = 2,2p = 3,3p = 5,…,6p = 13,…;n ≥2 。

粗集料及集料混合料的筛分试验T0302-2005

粗集料及集料混合料的筛分试验 (T 0302-2005) 一、目的与适用范围 1、测定粗集料(碎石、砾石、矿渣等)的颗粒组成对水泥混凝土用粗集料可采用干筛法筛分,对沥青混合料及基层用粗集料必须采用水洗法试验。 2、本方法也适用于同时含有粗集料、细集料、矿粉的集料混合料筛分试验,如未筛碎石、级配碎石、天然砂砾、级配砂砾、无机结合料稳定基层材料、沥青拌和楼的冷料混合料、热料仓材料、沥青混合料经溶剂抽提后的矿料等。 二、仪具与材料 1、试验筛:根据需要选用规定的标准筛。 2、摇筛机。 3、天平或台秤:感量不大于试样质量的0.1%。 4、其它:盘子、铲子、毛刷等。 三、试验准备 按规定将来料用分料器或四分法缩分至下表1要求的试样所需量,风干后备用。根据需要可按要求的集料最大粒径的筛孔尺寸过筛,除去超粒径部分颗粒后,再进行筛分。 筛分用的试样质量表1 公称最大粒径(mm)756337.531.526.519169.5 4.75试样质量不小于(kg)10854 2.52110.5 四、水泥混凝土用粗集料干筛法试验步骤

1、取试样一份置105℃±5℃烘箱中烘干至恒重,称取干燥集料试样的总质量(m0),准确至0.1%。 2、用搪瓷盘作筛分容器,按筛孔大小排列顺序逐个将集料过筛。人工筛分时,需使集料在筛面上同时有水平方向及上下方向的不停顿的运动,使小于筛孔的集料通过筛孔,直至1min内通过筛孔的质量小于筛上残余量的0.1%为止;当采用摇筛机筛分时,应在摇筛机筛分后再逐个由人工补筛。将筛出通过的颗粒并人下一号筛,和下一号筛中的试样一起过筛,顺序进行,直至各号筛全部筛完为止。应确认1min内通过筛孔的质量确实小于筛上残余量的0.1%。 注:由于0.075㎜筛干筛几乎小能把沾在粗集料表面的小于0.075㎜部分的石粉筛过去,而且对水泥混凝土用粗集料而言,0.075㎜通过率的意义不大,所以也可以不筛,且把通过0.15㎜筛的筛下部分全部作为0.075㎜的分计筛余,将粗集料的O.075㎜通过率假设为0。 3、如果某个筛上的集料过多,影响筛分作业时,可以分两次筛分,当筛余颗粒的粒径大于19㎜时,筛分过程中允许用手指轻轻拨动颗粒,但不得逐颗筛过筛孔。 4、称取每个筛上的筛余量,准确至总质量的0.1%。各筛分计筛余量及筛底存量的总和与筛分前试样的干燥总质量m0相比,相差不得超过m0的0.5%。 五、沥青混合料及基层用粗集料水洗法试验步骤 1、取一份试样,将试样置105℃±5℃烘箱中烘干至恒重,称取干燥集料试样的总质量(m3),准确至0.1%。 2、将试样置一洁净容器中,加入足够数量的洁净水,将集料全部淹没,但不得使用任何洗涤剂、分散剂或表面活性剂。 3、用搅棒充分搅动集料,使集料表面洗涤干净,使细粉悬浮在水中,但不得破碎集料或有集料从水中溅出。 4、根据集料粒径大小选择组成一组套筛,其底部为0.075㎜标

素数普遍公式

素数普遍公式 目录[隐藏] 一、引言 二、素数普遍公式 三、素数的个数 四、公式的用途 五、素数普遍公式在认识形成中的作用和意义 思考题 一、引言 二、素数普遍公式 三、素数的个数 四、公式的用途 五、素数普遍公式在认识形成中的作用和意义 思考题 [编辑本段] 一、引言 2000多年前欧几里德在证明素数无穷多时就埋下了寻求素数普遍公式的伏笔 素数普遍公式 ,以布劳维尔为首的直觉主义学派认为:“你没有给出第n个素数是如何构造的,就不能算是好的证明”。2000多年来,数论学最重要的一个任务,就是寻找素数普遍公式,为此,一代又一代数学精英,耗费了巨大的心血,始终未获成功。黎曼曾想用他的ζ函数数的“零点”来逼近素数普遍公式,至今未获成功。也有人反向思考,用素数普遍公式逼近“零点”来解决黎曼猜想。希尔伯特在1900年的国际数学家大会上说:对黎曼公式进行了彻底讨论之后,或许就能够严格解决哥德巴赫问题和孪生素数问题。实际在哲学上,只要有一个明确的定义,就应该有一个公式。 [编辑本段] 二、素数普遍公式

公元前250年同样是古希腊的数学家埃拉托塞尼提出一种筛法: (一)“要得到不大于某个自然数N的所有素数,只要在2---N中将不大于√N的素数的倍数全部划去即可”。 (二)将上面的内容等价转换:“如果N是合数,则它有一个因子d满足1

筛法求素数

筛法求素数 目录 基本思想 C语言实现 pascal实现: 1C++实现: 2python 实现: 基本思想 用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列,1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。如有: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1不是素数,去掉。剩下的数中2最小,是素数,去掉2的倍数,余下的数是: 3 5 7 9 11 13 15 17 19 21 23 25 27 29 剩下的数中3最小,是素数,去掉3的倍数,如此下去直到所有的数都被筛完,求出的素数为: 2 3 5 7 11 13 17 19 23 29 C语言实现 1、算法一:令A为素数,则A*N(N>1;N为自然数)都不是素数。 #define range 2000 bool IsPrime[range+1]; //set函数确定i是否为素数,结果储存在IsPrime[i]中,此函数在DEV C++中测试通过 void set(bool IsPrime[]) { int i,j; for(i=0;i<=range;++i) IsPrime[i]=true; IsPrime[0]=IsPrime[1]=false; for(i=2;i<=range;++i) { if(IsPrime[i]) { for(j=2*i;j<=range;j+=i) IsPrime[j]=false; } } } 2、 说明:解决这个问题的诀窍是如何安排删除的次序,使得每一个非质数都只被删除一次。中学时学过一个因式分解定理,他说任何一个非质(合)数都可以分解成质数的连乘积。例如,16=4^2,18=2 * 3^2,691488=2^5 * 3^2 * 7^4等。如果把因式分解中最小质数写在最左边,有16=4^2,18=2*9,691488=2^5 * 21609,;换句话说,把合数N写成N=p^k * q,此时q当然是大于p的,因为p是因式分解中最小的质数。由于因式分解的唯一性,任何一个合数N,写成N=p^k * q;的方式也是唯一的。由于q>=p的关系,因此在删除非质数时,如果已知p是质数,可以先删除P^2,p^3,p^4,... ,再删除pq,p^2*q,p^3*q,...,(q是比p大而没有被删除的数),一直到pq>N为止。 因为每个非质数都只被删除一次,可想而知,这个程序的速度一定相当快。依据Gries与Misra的文章,线性的时间,也就是与N成正比的时间就足够了(此时要找出2N的质数)。(摘自《C语言名题精选百则(技巧篇)》,冼镜光编著,机械工业出版社,2005年7月第一版第一次印刷)。代码如下: #include #include using namespace std; int main() { int N; cin>>N; int *Location=new int[N+1]; for(int i=0;i!=N+1;++i) Location[i]=i; Location[1]=0; //筛除部分int p,q,end; end=sqrt((double)N)+1; for(p=2;p!=end;++p) { if(Location[p]) { for(q=p;p*q<=N;++q) { if(Location[q]) { for(int k=p*q;k<=N;k*=p) Location[k]=0; } } } } int m=0; for(int i=1;i!=N+1;++i) { if(Location[i]!=0) { cout<

粗集料筛分试验[教材]

粗集料筛分试验[教材] T0302-2000 粗集料筛分试验 1 目的与适用范围 测定粗集料(碎石、砾石、矿渣等)的颗粒级配。 2 仪具与材料 2.1 试验筛:根据需要选用规定的标准筛。 2.2 天平或台秤:感量不大于试样质量的0.1%。 2.3 其它:盘子、铲子、毛刷等。 3 试验准备 筛分用的试样质量表1 公称 最大方孔763321194粒径筛 5 3 7.5 1.5 6.5 9 6 .5 .75 (mm) 试样质量 120不少于8 5 4 2 1 1 0 .5 .5 (kg) 3.1将来料用分料器或四分法筛分至表1要求的试样所需量,风干 后备用。每种试样准备两份,分别供水洗和干筛法筛分使用。对 水泥混凝土用集料,如果没有要求,也可不进行水洗,只进行筛 筛分。根据需要可按要求的集料最大粒径的筛孔尺寸过筛,除去超粒径部分颗粒后,再进行筛分。 3.2筛分用的试样质量表1 公称最大粒径(mm)方孔筛 756337.531.526.519169.54.75圆孔筛80634031.5252016105试样质量不少于(kg)108542.52110.54 试验步骤 4.1 用水洗法测定集料中小于0.075mm的细粉部分质量。

4.1.1 取一份试样,将试样置105?5摄氏度烘箱中烘干至恒重,称取干燥集料试样的总质量(m),准确至0.1%。 1 注:恒重系指相邻两次称量间隔时间大于3h的情况下,前后两次称量之差小于该项试验所要求的称量精密度(下同),通常不少于6h。 4.1.2 将试样置一洁净容器中,加入足够数量的洁净水,将集料全部盖没。 4.1.3 用搅棒充分搅动集料,使集料表面洗涤干净,使细粉悬浮在水中,但不得破碎集料或集料从水中溅出。 4.1.4 根据集料粒径大小选择组成一组套筛,其底部为0.075mm标准筛,上部为2.36mm或4.75mm筛。仔细将容器中混有细粉的悬浮液倒出,经过套筛流入另一容器中,尺量不致将粗集料倒出,损坏标准筛筛面。 注:不可直接倒至0.075mm筛上,以免集料掉出损坏筛面。 4.1.5 重复4.1.2~4.1.4步骤,直至倒出的水洁净为止。 4.1.6 将套筛的每个筛子上的集料及容器中的集料全部间收在一个搪瓷盘中,容器上不得有沾附的集料颗粒,将搪瓷盘连同集料一起置105?5摄氏度烘箱中烘干至恒重,称取干燥集料试样的总质量(m),准确至0.1%。 2 4.2 用干筛法测定粗集料各个粒级质量百分率。 4.2.1 取另一份试样置105?5摄氏度烘箱中烘干至恒重,称取干燥集料试样的总质量(m0),准确至0.1%。 4.2.2 用搪瓷盘作筛分容器,按筛孔大小排列顺序逐个将集料过筛,人工筛分时,需使集料在筛面上同时有水平方向及上下方向的不停顿的运动,使小于筛孔的集料通过筛孔,直至1min内通过筛孔的质量小于筛上残余量的1%为止。采用摇筛机筛分后,应该逐个由人工补筛。将筛出通过的颗粒并入下一号筛,和下一号筛中的试样一起过筛,顺序进行,直至各号筛全部筛完为止。以确认1min内通过筛孔的质量确实小于筛残余量的1%。 4.2.3 如果某个筛上的集料过多,影响筛分作业时,可以分两次筛分,当筛余颗粒的粒径大于20mm时,筛分过程中允许用手指轻轻拔动颗粒,但不得逐颗粒颗

用筛法求出100以内的全部素数

例6、用筛法求出100以内的全部素数,并按每行五个数显示。 【问题分析】 ⑴把2到100的自然数放入a[2]到a[100]中(所放入的数与下标号相同); ⑵在数组元素中,以下标为序,按顺序找到未曾找过的最小素数minp,和它的位置p(即下标号); ⑶从p+1开始,把凡是能被minp整除的各元素值从a数组中划去(筛掉),也就是给该元素值置0; ⑷让p=p+1,重复执行第②、③步骤,直到minp>Trunc(sqrt(N)) 为止; ⑸打印输出a数组中留下来、未被筛掉的各元素值,并按每行五个数显示。 用筛法求素数的过程示意如下(图中用下划线作删去标志): ① 2 3 4 5 6 7 8 9 10 11 12 13 14 15…98 99 100 {置数} ② 2 3 4 5 6 7 8 9 10 11 12 13 14 15…98 99 100 {筛去被2整除的数} ③ 2 3 4 5 6 7 8 9 10 11 12 13 14 15…98 99 100 {筛去被3整除的数} …… 2 3 4 5 6 7 8 9 10 11 12 13 14 15…98 99 100 {筛去被整除的数} Program Exam53; const N=100; type xx=1 .. N; {自定义子界类型xx(类型名)} Var a: array[xx] of boolean; i,j: integer; Begin Fillchar(a,sizeof(a),true); a[1] := False; for i:=2 to Trunc(sqrt(N)) do if a[I] then for j := 2 to N div I do a[I*j]:= False; t:=0; for i:=2 to N do if a[i] then Begin write(a[ i ]:5); inc(t); if t mod 5=0 then writeln end; End. 【例3】输入十个正整数,把这十个数按由大到小的顺序排列(将数据按一定顺序排列称为排序,排序的算法有很多,其中选择排序中的“简单选择排序”是一种较简单的方法) 分析:要把十个数按从大到小顺序排列,则排完后,第一个数最大,第二个数次大,……;因此,我们第一步可将第一个数与其后的各个数依次比较,若发现,比它大的,则与之交换,比较结束后,则第一个数已是最大的数。同理,第二步,将第二个数与其后各个数再依次比较,又可得出次大的数。如此方法进行比较,最后一次,将第九个数与第十个数比较,以决定次小的数。于是十个数的顺序排列结束。 例如下面对5个进行排序,这个五个数分别为829105。按选择排序方法,过程如

素数的线性筛法

素数的线性筛法 //整体思想是从自然数 2 开始与所有之前已经确定的素数相乘后的数标记为合数就能把素数一个不漏地找出来 #include #include #include #include #include #include #include #include #include #include #include #include #define MID(x,y) ( ( x + y ) >> 1 ) #define L(x) ( x << 1 ) #define R(x) ( x << 1 1 ) #define FOR(i,s,t) for(int i=(s); i<(t); i++) #define FORD(i,s,t) for(int i=(s-1); i>=t; i--) #define BUG puts("here!!!") #define STOP system("pause") #define file_r(x) freopen(x, "r", stdin) #define file_w(x) freopen(x, "w", stdout) using namespace std; const int SULEN = 1000000; bool flag[SULEN+1];// 是否为素数 int prime[1000001];// 存储的素数 int sum[SULEN+1];//n 的所有质因子的和 void xianxingshai(void) { int count,i,j; fill( flag,flag+SULEN,true ); // 初始化假设每个都为素数 fill( sum ,sum +SULEN, 0 ); //初始化质因子和为0 flag[0] = flag[1] = false; //0 和 1 不是素数 for( count = 0, i = 2; i <= SULEN; i++ )// 从 2 开始判断是否为素数 { if( flag[i] ) // 如果是素数 { prime[count++] = i;sum[i] = i; //将值传到prime 数组中 } for( j = 0; j < count && i*prime[j] <= SULEN; j++ ) // 将包含该质因数的合数都 标为 false

素数的几种判断方法和实现

PS:本来没有决心把这个东西写完的,结果早上写到一半,出去吃个饭,没保存,回来手一抖直接关掉了,好不容易写了一大半了,只能重新写了,坑爹啊,但就是这个插曲,本来还没有决心的我,一下子却坚定了信念,一点要把这个东西写完。就这样开始吧 BY:Lee 下面,我们重新开始 ═══════════════════════════════════════════ 如何判断一个数是否是素数呢 ═══════════════════════════════════════════也许你会认为这是一个简单的问题,但事实上,世界上任何一个问题,都没有你想象中的那么简单1 + 1 是否等于2 ,这便是一个简单而又复杂的问题,呵呵。 突然想把这个东西换一种风格来写了,就这样扯淡扯下去吧。扯的时候文章中多少有内容来自于网络,没有侵权的意思,如果作者看到还请见谅。 ═══════════════════════════════════════════下面正式进入正题 ═══════════════════════════════════════════ 一、朴素判断素数 ═══════════════════════════════════════════1. 这种方法被誉为笨蛋的做法: 一个数去除以比它的一半还要大的数,一定除不尽的,这还用判断吗?? 很容易发现的,这种方法判断素数,对于一个整数n,需要n-2 次判断,时间复杂度是O(n)在n非常大或者测试量很大的时候,这种笨蛋做法肯定是不可取的。

2. 改进一下下小学生的做法: 3. 再改进一下聪明的小学生的做法 对于一个小于n的整数X,如果n不能整除X,则n必定不能整除n/X。反之相同一个明显的优化,就是只要从2枚举到√n 即可。 因为在判断2的同时也判断了n/2。到√n时就把2到n-1都判断过了。 在这里,这个聪明的小学生还用了i*i <= n 来代替sqrt(n), 这里是避免了调用函数sqrt(),其消耗时间很大, 特别是在大量数据测试的时候消耗很明显。 这个算法的时间复杂度,与最前面的笨蛋做法就好多了, 不过这里好像用sqrt()也没问题啊,,,,这个就不太清楚了。 但是做一个测试发现,如果是这样额话,每一次判断都要计算i*i,

2016试验检测人员继续教育答案-石料粗集料讲解

恒重系指相邻两次称取间隔时间大于()的情况下,前后两次称量之差小于该项试验所要求的称量精密度。 A.1 h B.2 h C.3 h D.4 h 答案:C 您的答案:C 题目分数:2 此题得分:2.0 批注: 第2题 测定粗集料(碎石、砾石、矿渣等)的颗粒组成,人工筛分时,需使集料在筛面上同时有水平方向及上下方向的不停顿的运动,使小于筛孔的集料通过筛孔,直至1min内通过筛孔的质量小于筛上残余量的()为止 A.0.10% B.0.20% C.0.30% D.0.40% 答案:A 您的答案:A 题目分数:2 此题得分:2.0 批注: 第3题 测定粗集料(碎石、砾石、矿渣等)的颗粒组成、干筛法筛分结果的计算若损耗率大于( ),应重新进行试验。 A.0.10% B.0.20% C.0.30% D.0.40% 答案:C 您的答案:C 题目分数:2 此题得分:2.0 批注:

粗集料软弱颗粒试验将每份中每一个颗粒大面朝下稳定平放在压力机平台中心,9.5mm~16mm的颗粒应加以(),破裂之颗粒即属于软弱颗粒。 A.0.1kN B.0.15kN C.0.25kN D.0.34kN 答案:C 您的答案:C 题目分数:2 此题得分:2.0 批注: 第5题 粗集料软弱颗粒试验将每份中每一个颗粒大面朝下稳定平放在压力机平台中心,16mm以上的颗粒应加以(),破裂之颗粒即属于软弱颗粒。 A.0.1kN B.0.15kN C.0.25kN D.0.34kN 答案:D 您的答案:D 题目分数:2 此题得分:2.0 批注: 第6题 粗集料密度及吸水率试验取试样一份装入干净的搪瓷盘中,注入洁净的水,水面至少应高出试样 ( ),轻轻至搅动石料,使附着在石料上的气泡完全逸出。 A.10mm B.20mm C.30mm D.40mm 答案:B 您的答案:B 题目分数:2 此题得分:2.0 批注:

线性筛法求素数的原理与实现

何为线性筛法,顾名思义,就是在线性时间内(也就是O(n))用筛选的方法把素数找出来的一种算法,没用过线性筛素数法的人可能会奇怪,用遍历取余判定素数不是也是线性时间的吗,没错,但是确切的说线性筛法并不是判定素数的,而是在线性时间内求出一个素数表,需要判定是否是素数的时候只要看该数是否在表内就可以瞬间知道是不是素数。 比如想求10000以内的素数,定义表int a[10000],进行线性筛选后,a[n]的值就代表n是不是素数,a[n]如果是1,就代表n是素数,a[n]如果是0,就代表n不是素数,这就是查表。再判定其他的素数也是一样,不用再做任何计算。 而如果用遍历取余,那么每判定一个数都要从头开始再遍历一遍,而线性筛法只在开始一次性运算完,以后只要查表即可,查表通常只需要1条语句。所以如果你的程序从始至终只需要判定那么几次素数那么用遍历取余即可,但是如果需要多次判定素数,而且这个数还不是很小的话,那么线性筛法就会体现出巨大的优越性来。 线性筛法的核心原理就是一句话:每个合数必有一个最大因子(不包括它本身),用这个因子把合数筛掉,还有另一种说法(每个合数必有一个最小素因子,用这个因子筛掉合数,其实都一样,但是我觉得这种方法不太容易说明,这种方法我会在最后给出简略说明)。这个很容易证明:这个小学就知道合数一定有因子,既然是几个数,就一定有最大的一个。最大因子是唯一的,所以合数只会被它自己唯一的因子筛掉一次,把所有合数筛掉后剩下的就全是素数了。 先假设一个数i,一个合数t,i是t最大的因数,t显然可能并不唯一(例如30和45的最大因数都是15)。那么如何通过i知道t呢,t必然等于i乘以一个比i小的素数。先来说这个数为什么一定要比i小,这很显然,如果是i乘上一个比它大的素数,那么i显然不能是t 最大的因子。再来说为什么要是素数,因为如果乘上一个合数,我们知道合数一定可以被分解成几个素数相乘的结果,如果乘上的这个合数x=p1*p2*……,那么 t = i * x = i * p1 * p2……很显然p1* i也是一个因数,而且大于i。所以必须乘上一个素数。 比i小的素数一定有不少,那么该乘哪一个呢,既然t不唯一,那么是不是都乘一遍呢?很显然不行,虽然t不唯一,但全乘一遍很显然筛掉的数的数量远远超过合数的数量。我们先给出结论: 任意一个数i = p1*p2*……*pn,p1、p2、……pn都是素数,p1是其中最小的素数, 设T 为i * M的积(显然T就成了一个合数),也就是T = i * M,(M是素数,并且M<=p1),那么T的最大的因数就是i。 是的,乘上的数要小于等于i最小的质因数。

[课程]粗集料筛分试验规程

[课程]粗集料筛分试验规程 粗集料筛分试验 1 目的与适用范围 1.1测定粗集料(碎石、砾石、矿渣等)的颗粒组成。对水泥混凝土用粗集料可采用干筛法筛分,对沥青混合料及基层粗集料必须采用水洗法试验。 1.2 本方法也适用于同时含有粗集料、细集 料、矿粉的集料混合料筛分试验,如未筛碎石、 级配碎石、天然砂砾、级配砂砾、无机结合料 稳定基层材料、沥青拌和楼的冷料混合料、热 料仓材料、沥青混合料经溶剂抽提后的矿料等 2仪具与材料 (1)试验筛:根据需要选用规定的标准筛。 (2)摇筛机。 (3)天平或台秤:感量不大于试样质量的0. 1,。 (4)其它:盘子、铲子、毛刷等。 3 试验准备 按规定将来料用分料器或四分法缩分至表T0302-1要求的试样所需量,风干后备用。根据需要可按要求的集料最大粒径的筛孔尺寸过筛,除去超粒径部分颗粒后,再进行筛分。 表T0302-1 筛分用的试样质量公称最大粒 75 63 37.5 31.5 26.5 19 16 9.5 4.75 径(mm) 试样质量不

10 8 5 4 2.5 2 1 1 0.5 少于(kg ) 4水泥混凝土用粗集料干筛法试验步骤 4.1 取试样一份置105??5C烘箱中烘干至恒重,称取干燥集料试样的总质量(m),准确o 至0.1%。 4.2用搪瓷盘作筛分容器,按筛孔大小排列顺序逐个将集料过筛。人工筛分时,需使集料在筛面上同时有水平方向及上下方向的不停顿的运动,使小于筛孔的集料通过筛孔,直至lmin内通过筛孔的质量小于筛上残余量的0. 1,为止;当采用摇筛机筛分时,应在摇筛机筛分后再逐个由人工补筛。将筛出通过的颗粒并人下一号筛,和下一号筛中的试样一起过筛,顺序进行,直至各号筛全部筛完为止。应确认lmin内通过筛孔的质量确实小于筛上残余量的0.1,。 注:由于0.075筛干筛几乎不能把沾在粗集料表面的小于0.075mm部分的石粉筛过去,而且对水泥混凝土用粗集料而言,0.075mm通过率的意义不大,所以也可以不筛,且把通过0.15mm筛的筛下部分全部作为0.075mm的分计筛余,将粗集料的0.075mm通过率假设为0。 4.3 如果某个筛上的集料过多,影响筛分作业时,可以分两次筛分。当筛余颗粒的粒径大于19mm时,筛分过程中允许用手指轻轻拨动颗粒,但不得逐颗塞过筛孔。 4.4称取每个筛上的筛余量,准确至总质量的0.1,。各筛分计筛余量及筛底存量的总和与筛分前试样的干燥总质量m相比,相差不得超o 过mo的0.5,。 5 计算 5.1 干筛法筛分结果的计算

ACM 筛素数总结

【总结】关于求素数的说【两种筛法】 (学习小结,请无视) 素数大家都很熟了,不多说了,这里只想说一下求素数。 当然先是唯一素因子分解定理:合数a仅能以一种方式,写成如下的乘积形式:a=p1e1p2e2…prer 其中pi为素数,p1sqrt(n)时筛中剩下的数就已经都是素数了。 //用数组prime[MAXN]记录是否为素数; //prime[i]为0表示i为素数,否则为合数 int prime[MAXN]={0}; for(i=2;i*i<=n;i++) { if(prime[i]==0) { for(j=i+i;j<=n;j+=i) prime[j]=1; }

孪生素数筛法

孪生素数筛法 齐宸 首先研究一下个位为3的合数。 要想两数相乘的结果个位为3,这两数字的个位有且只有两种组合1、3或7、9。自然数(10k+1)乘以自然数(10i+3),可以利用初中数学将其转化为10[(10i+3)k+i]+3形式。去个位后转换为(10i+3)k+i。 同法可得个位为1、3、7、9全部无个位合数公式,结果如下: 个位为1:(10i+1)k+i、(10i+3)k+7i+2、(10i+9)k+9i+8 个位为3:(10i+3)k+i、(10i+7)k+9i+6 个位为7:(10i+7)k+i、(10i+3)k+9i+2 个位为9:(10i+9)k+i、(10i+3)k+3i、(10i+7)k+7i+4 这里的关键是去掉个位。 显然个位为1的无个位合数公式可以求得所有个位为1的合数,计算结果中没有的数字必是个位为1的素数,也就说可以筛出所有个位为1的素数。这实际上就是个位为1的素数筛法。 同样个位1和个位为3的5组无个位合数公式合用,可以计算得到所有个位为1和个位为3的合数,也就等同于得到了任意一个自然数内所有个位为1和3的非孪生素数。而剩余数字全部是孪生素数。此时的非孪生素数与孪生素数不是2个数字,全部是一个数字。比如个位1和个位为3的5组无个位合数公式合用能计算出10以下9个数字中的6个数字,分别是2、3、5、6、8、9,这些无个位数字分别填上个位数字1、3后变成两个数字,如2变成21-23显然这组不是孪生素数。同样,31-33、51-53、61-63、81-83、91-93也不是孪生素数。而计算结果中没有的数字1、4、7,这3个数字填上个位1和3后分别变成了11-13、41-43、71-73,全部是孪生素数。这种方法实质上就是孪生素数筛法。当然仅是个位为1和3的这类孪生素数。(17-19和29-31这样类型的孪生素数变换公式后也可求出)。 这里有三个新观点: 1、孪生素数可以用一个数字指代。 如用1指代孪生素数11-13,用4指代孪生素数41-43。相反的如2、3是非孪生素,分别对应的是21-23和31-33。 2、孪生素数存在补集:非孪生素数。

用筛法求素数

输出素数表,方法之一就是舍弃空间,换取时间,也就是用一个大数组来存放每一个数是不是素数。这样用筛法求素,大大的减少了时间。下面的筛法求素程序求(不输出,即不定义OUT)1亿以内的素数只需要十几秒的时间,远小于输出所需的时间。 这个程序用一个char数组来存放每一个奇数是不是素数的信息。一个char是一个字节8位,存放8个数。 Program prime_char.cpp: #include #include #include //#define DEBUG #define OUT using namespace std; //常量定义 const long MAX=100000000; const long CHAR_MAX=int(MAX/16+1); const char byt[8]={128,64,32,16,8,4,2,1}; // 变量定义 /********************************** prime saves whether n is a prime the value of n is like: prime[0]: 3, 5, 7, 9,11,13,15,17 prime[1]:19,21,23,25,27,29,31,33 **********************************/ unsigned char prime[CHAR_MAX]; // 函数声明 inline bool isprime(long); inline void setcomposite(long); void primeinitiate(void); void out(long); //函数定义 /**************************************** *Function main * ****************************************/ int main() { #ifdef DEBUG test(); #else long n,m; primeinitiate(); n=5; while(n*n<=MAX) { if (isprime(n))

黎曼假设(2)素数个数公式

黎曼假设(2)素数个数公式《黎曼假设》(2)突破性解答 素数分布规则③——素数个数公式 千禧年世界数学难题之四解答 1900年希尔伯特23个问题第8题 世界数学难题解答 作者:中国数论研究者 江西景德镇 乐平林登发 (经济师) 邮箱:2208831455@https://www.wendangku.net/doc/a86607344.html, 2015.7.8

㈠前言 随着《黎曼假设》素数分布被级数筛法突破性解答,《孪生素数猜想》素数对被序号筛法突破性解答,在数论史上还有关于素数无限发展,无限延伸从0至∞的发展趋势,它们的数量计算还是渺茫,难以捉摸。 古今很多学者創造过一些计算素数个数公式,不是属于数理逻辑推导出来的,而是捕风捉影硬套产生的,所以很多公式一用就失效,目前世界上还沒有素数个数精确公式,那怕局部区域使用的也沒有,大家都在渴望,期盼着…… 当前是万民创业,万众创新时代,陷入僵局的素数分布问题应运而生,应运而解,上可顺乎天意,下和谐接地气,素数分布个数公式要出世了,古老数论将有突破性进展。 ㈡基础理论引导 自然数是素数及素数变換形态模式共同产生的混合体,六进制1633规则级数筛法揭露自然数中素数分布规则,只有在阳奇数6N+1和在阴奇数6N-1中有素数存在。 阳奇数中的素数叫阳素数,阴奇数中的素数叫阴素数,从此知道素数也有阴阳之分。 由六进制中6分解:6=1X2x3中得到1,2,3,是0号原始素数。 因此素数理念革命性改变了,素数有三种:原始素数,阳素数,阴素数。因此 素數数量精确公式: ∑全体素数分布数量个数 =∑原始素数+∑阳素数+∑阴素数。 后二种统称普通素数,1是先天性原始素数。 在阳奇数中除阳素數以外,还有阳复合“积”合数,可以用十字街规则把它筛选出来。同样在阴奇数除阴素数以外,还有阴复合“积”合数,也可以用十字街规则把它筛选出来。 这些复合“积”合数在相对区域来说数量是变化的,是动态的。随区域变化而变化,分布数量十分不均匀。所以在无数次探索中釆取以动制动求解,才符合数理逻辑。只有转换思维方法,简单而直接的答案就可能是最合理可行的。 ㈢主题: 素数分布规则③——素数个数公式 从铁路规则双轨数中结构分析: ①原始素数即0号素数1,2,3,共三个。

粗集料的筛分试验

粗集料的筛分试验 1,目的与适用范围 测定粗集料的颗粒组成,对水泥混凝土用粗集料可用干筛法筛分,对沥青混合料及基层用粗集料必须采用水洗法试验。 2,仪具与材料 (1)试验筛:根据需要选用规定的标准筛。 (2)摇筛机。 (3)天平或台秤感量不大于试样质量的0.1%。 (4)其他:盘子、铲子、毛刷等。 3,试验的准备 按规定将来料用分料器或四分法至下表所需的质量。 筛分用试样质量 试样要风干后备用。根据需要可按要求的集料最大粒径的筛孔尺寸过筛,筛除超粒径部分颗粒后,在进行筛分。

4,试验步骤 (1)取试样一份置于105℃±5℃烘箱中烘干至恒重,称取干燥集料试样的总),准确至0.1%。 质量(m (2)用搪瓷盘做筛分容器,按筛孔大小顺序逐个将集料过筛。人工筛分时,需使集料在筛面上同时有水平方向及上下方向有不停顿的运动,使小于筛孔的集料通过筛孔,直至1min内通过筛孔的质量小于筛上残余质量的0.1%为止,当采用摇筛机筛分时,应在摇筛机筛分后在由人工逐个补筛。将筛出通过的颗粒并入下一号筛,和下一号筛中的试样一起过筛,顺序进行直到各号筛全部筛完为止。应确认1min内通过筛孔的质量确实小于筛上残余量的0.1%。 (3)如果某个筛的集过多时,影响筛分作业时,可分两次筛分。当筛余颗粒的粒径大于19mm时,筛分过程允许用手指轻轻拨动颗粒,但不能逐个塞过筛孔。 (4)称取每个筛上的筛余量,准确总质量的0.1%。各筛分计筛余量及筛底存量和筛分前试样的干燥总质量相比,相差不得超过0.5% 5,计算 (1)分计筛余百分率精确至0.1%。 (2)累计筛余百分率精确至0.1%。 (3)各号筛的通过百分率精确至0.1% (4)由筛底存量除以扣除损耗后的干燥集料总质量计算0.075mm筛的通过率。(5)试验结果以两次试验的平均值表示精确至0.1%。当两次试验结果0.075mm 通过率的差值超过1.0%时,试验应重新进行。

相关文档
相关文档 最新文档