.
打印质数的各种算法:
http://coolshell.cn/articles/3738.html
部分文摘:
较好的算法
我们知道,我们的算法如果写成线性算法,也就是O(n),已经算是不错了,但是最好的是O(Log(n))的算法,这是一个对数级的算法,著名的二分取中(Binary Search)正是O(Log(n))的算法。通常来说,O(Log(n))的算法都是以排除法做为手段的。所以,找质数的算法完全可以采用排除法的方式。如下所示,这种算法的复杂度是O(n(log(logn)))。
示例:打印30以内的质数
一、初始化如下列表。
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
二、把第一个数(2)取出来,去掉所有可以被2整除的数。
2 3 5 7 9 11 13 15 17 19 21 23 25 27 29
三、取第二个数(3),去掉所有可以被 3整除的数。
2 3 5 7 11 13 17 19 23 25 29
四、取第三个数(5),因为4已经被去除了,再去掉所有可以被5整除的数。
2 3 5 7 11 13 17 19 23 29
接下来的数是7,但是7的平方是49,其大于了30,所以我们可以停止计算了。剩下的数就是所有的质数了。
.
分享到:
相关推荐
### 概率算法求素数(C语言) #### 实验目的与背景 本实验旨在通过C语言实现一种基于概率的方法来查找一定范围内的素数。概率算法是一种在计算机科学和数学领域广泛应用的技术,特别是在处理复杂问题时,它可以...
### Java中的素数算法 #### 一、引言 在计算机科学领域,特别是算法与数据结构的研究中,素数检测是一项基本且重要的任务。本文将详细介绍一个简单的Java程序,该程序能够有效地找出并打印出前500个素数。 #### ...
在编程领域,素数或质数是指大于1且仅能被1和其本身整除的自然数。在Java中实现打印素数的程序是一项基础但重要的任务,这有助于理解和掌握循环、条件判断以及数学逻辑在编程中的应用。下面将详细解释如何通过Java...
给定的代码片段是用C语言实现的一种素数筛选算法,主要目标是在101到200之间找出所有的素数,并打印出来。这段代码的关键在于其算法设计,即如何高效地判断一个数是否为素数。 ### 算法分析 #### 算法核心:优化的...
- `r`: 控制是否打印质数的标志位。 - **内部逻辑**: - 遍历从1到`i`的每一个整数`j`。 - 若`i`能被`j`整除,则`k`加1。 - 如果`k`恰好等于2且`i`等于`j`,则说明`i`是一个质数: - 如果`r`为1,则输出该质数...
JAVA算法编程题目及答案 本资源提供了50道JAVA算法编程题目及答案,涵盖了算法设计、数据结构、程序设计等多个方面的知识点。以下是对标题、描述、标签和部分内容的详细解释: 标题:JAVA算法编程题目及答案 本...
6. **素数判断算法**: - 在`sushu()`函数中,对于每个数组元素,从2开始到元素的一半(不包括自身)进行遍历,如果找到能整除该元素的数,则该元素不是素数,跳出循环。如果循环结束都没有找到能整除的数,说明是...
最后,通过输出循环打印出了所有小于`N`的质数。 #### 性能分析 Eratosthenes筛法的时间复杂度大致为O(n log log n),这使得它成为一种高效的求解质数的方法。此外,该算法的空间复杂度为O(n),因为需要一个大小为...
在VB(Visual Basic)编程语言中,实现求素数的算法是一项基础且重要的任务。素数是指大于1的自然数,除了1和它自身以外,不能被其他自然数整除的数。例如,2、3、5、7、11等都是素数。下面我们将详细探讨如何使用VB...
程序分析:对 n 进行分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成:(1)如果这个质数恰等于 n,则说明分解质因数的过程已经结束,打印出即可。(2)如果 n<>k,但 n 能被 k 整除,则应打印出 k 的值,...
一、九九乘法表打印算法 打印九九乘法口诀表是 Java 中经典的算法之一。通过使用 for 循环,可以实现九九乘法表的打印。下面是实现代码: ```java public void nineNineMulitTable(){ for (int i = 1,j = 1; j ; i...
该问题的解决方案使用了数学方法,即对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。如果n <> k,但n能被k整除,则应打印出k...
在这里,我们将编写打印质数的逻辑。 - **循环遍历**:使用`for`循环从2开始遍历到100。 - **质数检查**:对每个数字i,用另一个`for`循环从2到Math.sqrt(i)检查是否有因数。 - **输出**:如果找到的数字i在遍历...
素数在密码学等安全领域有着重要应用,因此理解并掌握素数判断算法对那些希望在安全领域有所建树的开发者而言,是一项不可或缺的技能。 水仙花数是另一个让人津津乐道的数学概念,在Java中实现起来相对直观。水仙花...
"Java求质数的几种常用算法分析" 本文主要介绍了Java中求质数的几种常用算法,并结合实例形式分析了三种比较常见的求质数算法原理及相关实现技巧。 一、根据质数的定义求质数 质数的定义是:只能被1或者自身整除...
单片机C语言常用算法是指在单片机系统中使用C语言实现的算法,包括计数、求和、求阶乘、求最大公约数、最小公倍数、判断素数、验证哥德巴赫猜想等。这些算法都是解决实际问题的基本思想方法和步骤。 一、计数、求和...
本文通过解析给定文件中的部分文字内容,旨在详细介绍Java经典算法40例中的三个具体实例,这些实例涉及递归算法、素数判定以及水仙花数的识别。以下是针对每个程序分析及知识点的详细介绍: 程序1:斐波那契数列...
全排序、二分查找、冒泡排序、阶乘、最大公约数、最小公倍数、打印九九乘法表、判断素数、快速排序的递归实现和非递归实现、随机数、字符串操作、50人围成一圈,数到3和3的倍数的人出局,最后剩下的人是谁。...
程序使用了递归函数来解决问题,即对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。如果n <> k,但n能被k整除,则应打印出k的...
对 n 进行分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成:(1)如果这个质数恰等于 n,则说明分解质因数的过程已经结束,打印出即可。(2)如果 n <> k,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以...