`
iamzealotwang
  • 浏览: 121350 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

判断素数引发的算法思考

阅读更多
看到一道算法题,要求判断出1000以内的素数

素数嘛 就是只能被自己整除或者被1整除

最笨的方法是从1判断到那个数,聪明点的方法是从3判断到那个数的平方根。

于是我就想,这个要是纯理论的算法 肯定是无可厚非的 第二种是最优算法。那换个角度思考

要是这个算法是实际应用中需要的呢。就是有这么一个业务 用户给定一个数 然后判断其是否为素数。

当这个是业务而不是算法的时候 我就产生了一个很怪的想法。为何不把这些素数都存在某一个文件上

如xml,然后运行前先load出来 判断的时候只是简单的判断其是否能被2整除,不行的话用二分法来在文件

load好的数组中查找即可。

显然存在这一个问题 数字超过了1000怎么办,也就是超过了你文档中储存的最大数字时候怎么办?

我认为那个时候再用最优算法去计算。[align=left][/align]

也就是说,把问题当作业务而不是算法来处理的时候 就存在一个概率问题了。如果在概率统计上能够保证

用户输入的数字大于1000的可能性很小的时候 使用这种伪算法是否更高效一些呢?
2
3
分享到:
评论
6 楼 suifeng 2009-02-12  
给出了一种解决问题的途径, 是一种打破常规的方法.
很有借鉴价值.
5 楼 duanaiguo 2008-08-19  
没有纯理论算法,能称为算法的都是要应用在实际中的,当然对于素数我所知道的更简单的算法为筛法,即去掉非素数的(这个很容易比如从2开始他的所有倍数肯定不是素数),剩下的全是素数。相对加法和乘法算平方根是很复杂的运算,这些教科书上一般都会讲到,大学的课程也不是百无一用,理论联系实际还是一大法宝啊。算法没有说明不能缓存。
4 楼 王者之剑 2008-08-13  
当然是要存起来的,别说1000了,1000万也可以存
3 楼 iamzealotwang 2008-08-13  
引用

数学中函数的定义是一个集合到另一个集合的映射(Map),这种纯的函数,本身不会保存任何状态,任何时候给出确定的参数都有确定不变的结果,所以该函数可以被缓存为一个Map


这个话的确很有哲理的样子。。。。不过我没有明白您要说的是什么意思
2 楼 neusoft 2008-08-13  
理论与工程的区别,大概就在于此吧
1 楼 ShiningRay 2008-08-13  
数学中函数的定义是一个集合到另一个集合的映射(Map),这种纯的函数,本身不会保存任何状态,任何时候给出确定的参数都有确定不变的结果,所以该函数可以被缓存为一个Map

相关推荐

    素数定义 素数判定证明 素数求解算法

    素数的求解算法主要包括素数检测算法和生成素数列表的方法。 1. **基本素性测试算法**: - 最简单的方法是从2到\( \sqrt{n} \)依次检查每个数是否能整除\( n \)。 - 代码示例(C语言): ```c bool IsPrime...

    AKS素数检测算法(多项式时间内检测)

    AKS算法是由Manindra Agrawal教授及其两名学生Neeraj Kayal和Nitin Saxena在坎普尔印度理工学院开发的一种用于判断整数是否为素数的新算法。该算法的重要贡献在于它能够在多项式时间内确定一个整数是否为素数,并且...

    Python 实现多种素数判断算法

    内容概要:本文详细介绍了四种常见的素数判断算法——试除法、埃拉托斯特尼筛法、米勒-拉宾素性检验以及费马素性检验的基本原理及其 Python 实现方法。此外,还简要提到了其他两种算法:威尔逊定理和阿格拉瓦尔-卡亚...

    基础算法-python判断素数

    python判断素数 def is_prime(n): # 判断素数的函数 """判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False""" if n return False # 0、1、负数以及偶数都不是素数 for i in range(2, ...

    Java中素数算法非常实用

    ### Java中的素数算法 #### 一、引言 在计算机科学领域,特别是算法与数据结构的研究中,素数检测是一项基本且重要的任务。本文将详细介绍一个简单的Java程序,该程序能够有效地找出并打印出前500个素数。 #### ...

    生成大素数算法,速度很快,包括大数运算

    - **AKS素性检验(Agrawal-Kayal-Saxena Test)**:2002年提出的确定性算法,可以在多项式时间内判断一个数是否为素数,但实际应用中由于计算复杂度较高,不如米勒-拉宾常见。 - **费马小定理(Fermat's Little ...

    最快求素数的算法,求100000000以下素数0.3秒

    最快求素数的算法,求100000000以下所有素数0.3秒 , 在10000000以下的数中找到664579个素数,耗时53毫秒

    素数算法素数代码

    素数算法主要用于生成素数或者判断一个给定的数字是否为素数。 ### 知识点二:C语言中的素数生成算法 #### 示例代码分析 ```c void primes(int cap){ int i, j, composite, t = 0; while (t * cap) { i = t / ...

    素数最优算法

    标题提到的“素数最优算法”,旨在通过高效的方法来判断一个给定的数字是否为素数。在实际应用中,尤其是在处理大数的情况下,素数检测算法的效率直接影响到程序的性能。因此,寻找一种既能准确又能快速完成任务的...

    rsa素数生成及加密算法

    可以随机生成素数,并生成公钥私钥,对明文进行加密。

    最快素数算法(绝非线性筛选)1.6秒算出1亿内所有素数

    革命性素数算法:计算1亿内素数只要1.6秒 算法基本跟之前发的C#版相同(http://download.csdn.net/source/690005内有算法描述),由我的朋友杨力2年前设计,时间复杂O(n)。我对其进行了革命性的数据结构改进,空间...

    c语言判断素数

    - **算法优化**:除了上面提到的优化方法外,还可以采用更高级的素数检测算法,如Miller-Rabin素性测试等。 - **应用领域**:素数检测不仅仅局限于学术研究,在密码学、网络安全等领域也有着广泛的应用。 通过以上...

    1000亿以内素数计数算法

    文章介绍了一种计算小于等于x的素数个数的算法,记为π(x)。文章首先提及了素数计数问题的悠久历史和计算素数个数的最直观方法是找出并计数所有小于等于x的素数,例如使用埃拉托斯特尼筛法。但由于素数定理的发现,...

    c++ 求素数优化算法

    新手我热爱算法,第一次由个人琢磨出来的优化求任意两个数之间的素数算法,谢谢。我个人觉得,他似乎可以减少时间复杂度

    判断素数,只能被1或本身整除的数称为素数 基本思想

    在计算机科学领域,判断素数是一项基础且重要的任务。素数是正整数中除了1和它自身外,无法被其他正整数整除的数。例如,2、3、5、7、11等都是素数。素数在密码学、数论以及算法设计等方面都有广泛应用。 判断一个...

    判断素数.exe,这是个人的学习资料,提供小程序使用。

    算法练习_判断素数.这是个人的学习资料,提供小程序使用。这只是作为保存版本,不做为其他用途。此处省略50字。

    demytko素数生成算法(完善版)

    demytko素数生成算法输入小素数生成大素数,如2,经10次循环,得到大素数411043979,时间为25秒

    素数检测算法

    尽管目前没有已知的有效算法可以在多项式时间内准确判断任意一个大数是否为素数,但概率性素数检测算法在实际应用中已经足够准确和高效,特别是在密码学领域。随着计算能力的提升和新的数学理论的发现,素数检测算法...

    判断素数。c_susan_

    在描述中,“判断素数de c yuyan yuandaima”进一步解释了程序的功能,即使用C语言实现素数判断的算法。"yuyan"可能是指“语言”,"yuandaima"可能是“源代码”的拼音缩写,意味着这是C语言的源代码程序,用于执行...

Global site tag (gtag.js) - Google Analytics