<2> 有限时间内,计算一个尽可能大的素数

1 . 问题点: “ 有限时间 ”、“ 尽可能大”、“ 素数 ”

“素数“  :需要经过素性测试合格后的数字

“有限时间”:测试一个数字,可接受的时间内,并非无穷尽的依靠暴力求解

“尽可能大”:可检测数的上限

2 . 问题点求解

2 . 1 “ 素 数 ”

1) 概 念: 大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的数称为质数,   

素数有无限个。

2) 素性测试待测方法:

方法一: 根据定理检测    (真 素 数 测 试

方法二: 改进版定理检测  (真 素 数 测 试

方法三: 一般筛选法      (真 素 数 测 试

方法四: 改进版筛选法    (真 素 数 测 试

方法五: Miller Rabin 算法(概 率 素 数 测 试

2 . 2 “ 有 限 时 间 ”

1) 待测方法介绍

· 根据定理检测

顾名思义,这种方法是根据概念进行试除计算,即:一个数字仅能被 1 和本身

整除。若存在其他数字可以整出此数字,则为合数,反之为素数(质数) 。

优点 : 易理解素数概念

缺点 : 每对一个数字进行素性测试,都需要从 2试除至待测数字的上一个数

字,效率低下。

· 改进版定理检测

根据概念,是否为素数,是判断存在数字能整除待测数字(1 和本身除外)。而一旦存在此数字,由于数字是成对出现,因此只需要判断数字对中最小的一个数字即可。得到:“ 任意一个数的最大质因数都小于或等于这个数的平方根 ”。因此,在对待测数字进行素性测试时,仅需要从 2 试除至待测数字的平方根即可,可以减少一些测试时间。

优点 : 能稍微减少一些测试时间

缺点 : 每对一个数字进行素性测试,都需要从 2试除至待测数字的平方根,效

率依然低下。

· 一般筛选法

我们知道,2 是素数,可以得出,2的倍数都是合数。我们还知道,3 是素数,可以得出,3 的倍数也都是合数。有“ 素数的倍数都是合数 ”所以根据以上,我们可以通过几个初始的素数表,找到所有的合数,并将素数筛选出来。

优点 : 能大幅减少测试时间

缺点 : 依然对于很多数字进行重复筛选,影响效率。

· 改进筛选法

例如:需要找 100 之内的素数,对于 30 这个数字 : 

30= 2 X 15

30 既是 2 的倍数,也是 15 的倍数,因此在一般的筛选法的过程中,30 在 2 的时候被筛选一次,在 15 的时候会被再次筛选一次。当数量级较大时,这种情况就会十分影响效率。所以,在改进的筛选方法中,这种情况应被避免,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值