`
iamzealotwang
  • 浏览: 121947 次
  • 性别: 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

相关推荐

    判断素数的aks算法代码matlab

    判断一个数字是素数还是合数的算法——aks算法,具有较强的优化性和较低的计算复杂度。方便、快捷、准确。

    简易素数算法导出的经典素数算法

    素数,即那些只能被1和自身整除的自然数,它们在算法理论和编程实践中扮演着重要角色。尤其对于参加ACM竞赛的学生来说,掌握有效的素数检测算法,不仅能够提升编程能力,更能在竞赛中获得时间优势。因此,本文将详细...

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

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

    Python 实现多种素数判断算法

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

    基础算法-python判断素数

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

    AKS prime 素数检测算法

    6. **终止条件**:如果以上所有步骤都无法确定n是否为素数,那么n可能是一个合数,但也不排除是由于算法复杂度过高导致无法判断。在实际应用中,可能会设定一个最大迭代次数,超过这个次数则认为n不是素数。 AKS...

    visual basic 素数经典算法vb6.0 vb.net关于素数的算法

    在VB(Visual Basic)环境中,无论是VB6.0还是VB.NET,都可以编写算法来判断一个数是否为素数。以下我们将详细探讨素数的概念、经典的素数算法以及如何用VB实现这些算法。 素数概念: 素数定义为大于1的自然数,...

    Java中素数算法非常实用

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

    素数算法素数代码

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

    素数最优算法

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

    最快素数算法(绝非线性筛选)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等都是素数。素数在密码学、数论以及算法设计等方面都有广泛应用。 判断一个...

    信息安全实验-Go语言实现维吉尼亚密码算法+AES加密算法+生成大素数的算法源码.zip

    信息安全实验-Go语言实现维吉尼亚密码算法+AES加密...实现生成大素数的算法 主要功能点 实现维吉尼亚密码的加密和解密 实现 AES-CTR 模式的加密和解密,并修复了计数器溢出的问题 实现生成大素数的算法 技术栈 Go 语言

    判断素数。c_susan_

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

    素数判定算法的实现

    素数判定算法是计算机科学中的一个重要概念,特别是在数论、加密算法以及算法优化等领域有广泛应用。本文将介绍几种常见的素数判定算法及其优化方法。 1. **原始算法**: 最简单的素数判定方法是试除法,即检查一...

    3_判断素数_yes_

    标题 "3_判断素数_yes_" 暗示我们要探讨的是如何在编程中判断一个正整数是否为素数的问题。素数是大于1且只有两个正因数(1和自身)的自然数,比如2、3、5、7、11等。描述中的任务明确指出,我们需要编写一个程序,...

Global site tag (gtag.js) - Google Analytics