当前位置:首页 > 日记 > 正文

素数搜索算法的设计与分析

素数搜索算法的设计与分析
在这篇文章中,我将使用C来找出两种求质数的算法,解释算法设计的重要性和算法的分析。

素数的搜索已经有很长的一段时间了,而且一直是一些数学家的目标。关于质数的定义和性质,我不是来讨论这个问题的。我相信每个人都知道它。寻找素数的方法很简单,根据素数的性质(素数不应该是除了1和它的其他数整除)我们可以从最小的质数2开始,直到它是小于1的数,与数整除通过它,如果它能整除它肯定是不是素数,这是一个单一的,素数判定方法(最简单的算法,复杂度最大的时间),我们也可以用这个方法来找到所有的素数的个数小于一个给定的整数,但我们会发现,使用这种单判断方法花费时间。例如,寻找素数不大于10,必须从2开始一个一个的来判断我们需要总共估计9个数字。事实上,根据我们后来提到的方法,我们只需要回收2次,因此,基于删除方法将进行以下两种方法。

让我们来看一下删除的概念。

1。将所有给定整数值小于整数的正整数添加到数组中。

2。删除可以由多个整数整除的数字;

3中留下的元素。数组是最终得到的素数序列。

对于第二步,我们将给出两种实现方法,让我们先看看算法。

算法1:

阶级的根本

{

public static int { } primelist;

public static void(int n)FindPrime

{

int { } IntList;

{ } IntList = new Int;

为(int p=2;p)

为(int p=2;p)

{

int = P + 1;

而(J

{

如果(((J-1 IntList { }!= 0)((IntList { J-1 } %)= = 0)){ } = 0 IntList J-1;

j = j + 1;

}

}

int = i 0;

为(int p=2;p)

{

如果(P-1 IntList { }!= 0)i = i + 1;

}

primelist =新的int {我};

我= 0;

为(int p=2;p)

{

如果(P-1 IntList { }!= 0)

{

我primelist { } = { } IntList P-1;

i = i + 1;

}

}

}

}

在该算法中,删除数是从2到n的平方根的整数个数。这种算法与单素数相比,搜索方法更好,它减少了一半以上的周期数,但该算法不是最理想的:
1。例如,6能被2整除,能被3整除,所以当p = 2, 6被删除一次;当p = 3, 6被删除一次,虽然我们设定算法根据规则,它不会导致冲突(通过判断数组中的元素IntList 0,如果0不会有重复,删除)而使算法的效率低。
2。除了素数序列中的元素个数外,我们还取一条曲线,在第一步中,我们首先计算数组元素的大小,然后只在第二步开始赋值。事实上,这两个步骤可以减少数组的大小,并且我们可以在前面完成它。
3、被删除的元素,也就是那些不是质数的元素,不需要把它们分为整数,例如,4不需要除以8,因为可以除以4的数可以整除2,这在前一个周期中已经被删除了。
基于以上考虑,我们得到了一个更有效的算法:
类primegood

{

public static int { } primelist;

public static void(int n)FindPrime

{

int { } IntList;

int = n-1;

{ } IntList = new Int;

为(int p=2;p)

为(int p=2;p)

{

如果(IntList { } = = 0 P-1)继续;

int = p;

而(J

{

如果(J-1 IntList { }!= 0)

{

{ 0 } = IntList J-1;

len-1 len =;

}

J=J+P;

}

}

primelist =新的int len } {;

int = i 0;

为(int p=2;p)

{

如果(P-1 IntList { }!= 0)

{

我primelist { } = { } IntList P-1;

i = i + 1;

}

}

}

}

该算法的思想与前面的算法完全相同,但它纠正了上述算法中一些不完善的内容。
为了说明这两种算法的效率差异,我们编写了主要程序来比较它们之间的差异。
静态空隙主()

{

console.writeline(开始!;

日期时间mytime5 = DateTime.Now;

(100000)primegood.findprime;

(int i = 0;i)

{

console.writeline(primegood。primelist {我});

}

日期时间mytime6 = DateTime.Now;

TimeSpan timeadd3 = mytime6-mytime5;

console.writeline(timeadd3。蜱);

日期时间mytime1 = DateTime.Now;

(100000)prime.findprime;

日期时间mytime2 = DateTime.Now;

TimeSpan timeadd = mytime2-mytime1;

日期时间mytime3 = DateTime.Now;

(100000)primegood.findprime;

日期时间mytime4 = DateTime.Now;

TimeSpan timeadd2 = mytime4-mytime3;

console.writeline(timeadd。蜱);

console.writeline(timeadd2。蜱);

}

}

通过运行该程序,可以发现他们的差异是如此之大,上述算法消耗时间是后者的算法几乎30-60倍。

事实上,该算法的时间复杂度是两个类似:*(N1.5)*(N);;因此,对于同样的问题,是实现各种不同的算法复杂度,算法设计是一个非常重要的知识。

相关文章

----C#推进孙文教程(三)

----C#推进孙文教程(三)

教程,电脑软件,孙文,终于到了一天,起床,伸展身体,坐在电脑前。今天我想告诉你的是C #阵列(阵列)阵列。C #和其他一些优秀的语言,但也从0米开始,这可以从我们以前的例子中看到的那样,也就是说,一个数组的第一个元素是{ 0 },而不是VB一(1)。虽然是这样,但…

WPSOffice(6.6.0.2805)V3.1抢鲜版正

WPSOffice(6.6.0.2805)V3.1抢鲜版正

正式发布,抢鲜,电脑软件,WPSOffice,昨日,WPS Office抢鲜版V3.1(6.6.0.2805)正式发布,提供免费下载使用。版本名名称:WPS Office 抢鲜版V3.1 发布日期:2011.4.12 版本号:6.6.0.2805WPS知道1.针对注册W…

HTML5的Flash比较

HTML5的Flash比较

电脑软件,Flash,HTML5的Flash比较:今年对Adobe而言真是多事之秋。被苹果修理完之后,这下轮到Opera了。在1994年发表CSS技术初步提议,因此被称为CSS之父,也是OperaCTO的哈哈康.维姆莱(HkonWiumLie)昨日在台湾表示,HTML5加上CSS3可以做到复杂的图形…

冰点降低6工作原理的详细解释

冰点降低6工作原理的详细解释

工作原理,解释,冰点,详细,电脑软件,认为这是一个炮手的职位,所以,目的是选择其他的恢复软件,仔细看看岗位和职位,并说没有技术含量,没有冰点,和非常愉快的工作。 首先,假设冰点的工作原理,不耐烦的朋友可以直接跳到第二部分,看看如何打破冰点恢复60…

手机宝贝i8可以在家下载资源

手机宝贝i8可以在家下载资源

资源下载,下载,宝贝,电脑软件,有朋友会问为什么不是诺基亚谷歌Android,诺基亚首席执行官史蒂芬·埃洛普解释说,因为这将使谷歌掌握了太多的市场力量,看来诺基亚也怕Android的巨大潜力,以下内容可能证明,诺基亚首席执行官的数据,最近公布的2010年…

下载软件王者争霸

下载软件王者争霸

下载软件,王者,电脑软件,                                                                                                      …

中文组件免费文件上传asp功能

中文组件免费文件上传asp功能

文件上传,组件,中文,功能,电脑软件,                                                                                                …

软件FastStoneImageViewer4.4绿色

软件FastStoneImageViewer4.4绿色

绿色版,电脑软件,FastStone Image Viewer是一个免费的和紧凑的寻找软件。它为用户提供了便捷的操作界面,让用户通过其操作界面浏览图片,也支持连续播放功能,让用户可以轻松浏览。所有图片目录中虽然免费,但提供了一个简单的图形编辑功能of.fast…

哪个是好的U盘启动盘制作工具

哪个是好的U盘启动盘制作工具

启动盘,制作工具,电脑软件,近日,有网友问萧边,这对U盘启动磁盘制作工具有好处吗针对这一问题,萧边在这里与你分享我的个人观点。现在网络可以使U盘启动盘的工具软件,操作非常简单,我们要做U盘启动盘的U盘,生产很麻烦,现在只需要使用一个工具很快完…

百度正式宣布3亿7000万美元用于PPS

百度正式宣布3亿7000万美元用于PPS

用于,百度,正式,电脑软件,万美元,上个月底有消息称,百度将收购PPS视频业务,虽然国外PPS一再否认,但收购事实已经尘埃落定。今天上午,百度正式宣布了3亿7000万美元收购PPS视频服务。 收购后,PPS视频业务将合并与Iqiyi、爱奇艺创始人公寓将成为新…

理解Web页面工具语言XML四应用程序

理解Web页面工具语言XML四应用程序

应用程序,工具,语言,分类,页面,四,XML应用程序分类 XML的一般应用可以分为四类: (1)当客户需要与不同的数据源进行交互,数据可能来自不同的,他们都有不同的复杂的格式。但客户交互的唯一标准语言,即XML。因为自定义和扩展的XML,它足以表达各种类…

asp系列(三)创建ASP页面

asp系列(三)创建ASP页面

页面,系列,电脑软件,asp,ASP,Active Server Pages(ASP)文件是以 .asp 为扩展名的文本文件,这个文本文件可以包括下列部分的任意组合: 文本 HTML 标记 ASP 脚本命令 创建 .asp 文件非常容易。如果要在 HTML 文件中添加脚本,只需将该文件的扩…