Java 中的 Eratosthenes 筛法算法2024 年 9 月 10 日 | 阅读 3 分钟 埃拉托斯特尼筛法是一种古老而高效的算法,用于找出给定范围内的所有素数。该算法以古希腊数学家埃拉托斯特尼·希腊命名,经受住了时间的考验,至今仍是数论和计算机科学中的基本概念。在本节中,我们将深入探讨埃拉托斯特尼筛法的机制,并用 Java 实现它,以了解它是如何高效地识别素数的。 理解埃拉托斯特尼筛法算法埃拉托斯特尼筛法的工作原理是通过迭代地划掉每个素数(从 2 开始)的倍数,从而揭示素数并消除非素数。该算法的主要步骤如下: 创建一个布尔数组来表示从 2 到给定上限的数字范围。 将数组中的所有元素初始化为 true,因为最初所有数字都被认为是素数。 从第一个素数(2)开始,将其所有倍数标记为非素数,方法是将它们在数组中对应的元素设置为 false。 找到数组中下一个仍标记为素数的数字,并重复步骤 3。 持续此过程,直到达到给定上限的平方根,因为此后不需要考虑任何非素数。 Java 实现埃拉托斯特尼筛法下面是埃拉托斯特尼筛法算法的 Java 实现: 文件名:SieveOfEratosthenes.java 输出 Prime numbers up to 50: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47] 解释 findPrimes() 方法接受一个整数上限作为输入,并返回给定上限内的所有素数列表。 isPrime() 布尔数组被初始化,用于存储从 2 到上限的每个数字的素性状态。 外层循环从第一个素数 2 开始,一直迭代到上限的平方根。对于每个素数 p,内层循环通过将对应的 isPrime() 数组元素设置为 false 来划掉它的所有倍数。 完成标记过程后,该算法将所有素数(在 isPrime() 数组中标记为 true)收集到 primes 列表中。 最后,main 方法演示了如何使用 findPrimes() 方法,通过找出 50 以内的素数并打印结果。 该程序使用埃拉托斯特尼筛法成功找出并打印了 50 以内的所有素数。素数列表为 [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]。这些数字除了 1 和它们本身之外没有其他除数。 结论埃拉托斯特尼筛法是找出给定范围内素数的一种强大而高效的方法。其时间复杂度为 O(n*log(log(n))),优于许多其他素数查找算法,使其成为各种数学和计算应用中的重要工具。本文提供的 Java 实现展示了如何使用现代编程语言来实现这种古老的算法来高效地解决实际问题。无论是为了数论还是性能优化,理解埃拉托斯特尼筛法对任何程序员来说都是一项宝贵的财富。 下一主题巴斯塔和 Java 的相似之处 |
费马小定理是数学概念的重要贡献,在算术和计算机科学中得到广泛应用。它尤其在离散算术、密码学和基本验证中成立。该定理以法国数学家皮埃尔·德·费马的名字命名,其陈述了一个关键属性……
5 分钟阅读
在 Java 中将 Long 转换为 Date 在本文中,我们将学习 Java 中的 Long 和 Date 是什么,以及它们在 Java 编程语言中的实现。我们还将深入讨论如何将 Long 值转换为 Date 值...
阅读 8 分钟
“对象切片”一词指的是当派生类对象被分配给基类实例时发生的情况。它会导致派生类对象丢失方法和成员变量。这被称为信息切片。作为...
阅读 4 分钟
火星探测器问题是一个经典的编程挑战,它考验一个人设计算法在矩形网格上导航探测器的能力。目标是根据一组命令来操纵探测器,避开障碍物并保持在边界内...
阅读 6 分钟
在 Java 中,所有给定序列的最长公共子序列称为。使用 LCS 的原因是限制子序列的元素在原始序列中占据连续的位置。在原始序列中以相同相对...的序列。
阅读 4 分钟
泛型是 Java 编程语言在 2004 年添加的通用编程功能。借助泛型编程,开发人员可以创建可以处理多种数据类型的程序。它是一种有效的策略,可以提高代码的可读性、可维护性和可重用性...
阅读9分钟
Java 是一种著名的计算机语言,已经使用了二十多年。有几个关键功能使开发人员能够构建高效且优雅的代码。例如,List sort() 函数用于按升序或降序对 List 进行排序。在本...
阅读 4 分钟
识别包含元音字符的最长字符串是可以使用多种方法解决的经典问题之一。直接解决问题的方法是检查所有可能的子字符串并进行比较,但这需要...
5 分钟阅读
HashMap 是 Java 中用于存储键值对的基本数据结构。它们通过键提供对值的快速高效访问,使其成为各种应用程序的流行选择。通常,您可能需要比较两个 HashMap 以识别差异或相似之处。在此...
5 分钟阅读
List 是使用最广泛的集合接口之一,用于存储有序集合。List 接口维护元素的插入顺序,并且也可以存储重复值。要了解更多关于 Java List 接口的知识,有以下三种方法...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India