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

相关推荐

    算法-判断素数的算法(包含源程序).rar

    这个压缩包文件"算法-判断素数的算法(包含源程序).rar"包含了一个关于判断素数的算法及其源代码,这通常是为了教育或实践目的而提供的。 首先,我们来理解一下判断素数的基本算法。最简单的算法是遍历法,也称为...

    判断素数的aks算法代码matlab

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

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

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

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

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

    C#判断素数的一个实例

    首先,我们要了解判断素数的基本算法。一种常见的方法是试除法。对于输入的数字n,我们可以从2开始,逐个检查到sqrt(n)(n的平方根),看n是否能被这些数字整除。如果都不能整除,那么n就是素数。这是因为如果n有...

    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...

    素数的测试算法

    4. **最终判断**: 如果未提前返回,则返回FALSE,表示n不是素数。 ### 知识点五:数据结构与源代码实现 #### 数据结构 本算法并未涉及复杂的数据结构,主要依赖基本的数值运算。 #### 程序源代码 代码示例展示了...

    素数算法素数代码

    素数算法主要用于生成素数或者判断一个给定的数字是否为素数。 ### 知识点二: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)。我对其进行了革命性的数据结构改进,空间...

    素数判定MillerRabin算法

    总之,Miller-Rabin算法提供了一种高效的方法来判断大整数的素数性,尽管它不能保证100%的准确性,但在实际应用中,通过增加测试轮数,我们可以获得非常高的置信度。在需要快速筛选素数的场景,如加密算法或大规模...

    c语言判断素数

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

    1000亿以内素数计数算法

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

    c++ 求素数优化算法

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

    判断素数。c_susan_

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

    蓝桥杯算法竞赛中的素数相关算法与习题解析

    通过实战演练掌握更多高效解决素数类问题的方法,比如素数的判断、素数筛选、质因数分解等问题,从而提升解题速度和准确性。 其他说明:读者可以根据自己的兴趣点选择关注的重点章节,并利用提供的代码样例自行尝试...

    素数判定算法的实现

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

Global site tag (gtag.js) - Google Analytics