Java 中的素数程序

2025 年 5 月 17 日 | 4 分钟阅读

质数是指大于 1 且只能被 1 和它本身整除的数字。换句话说,质数除了 1 和它本身,不能被其他任何数字整除。

例如,2、3、5、7、11、13、17... 都是质数。

注意:0 和 1 不是质数。数字 2 是唯一的偶数质数,因为所有其他偶数都可以被 2 整除。

算法

质数 Java 程序

在这个 Java 程序中,我们将取一个数字变量并检查该数字是否为质数。

示例

编译并运行

输出

3 is a prime number

使用用户定义方法实现质数程序

在下面的程序中,我们定义了一个方法来检查数字是否为质数。

示例

编译并运行

输出

1 is not a prime number
3 is a prime number
17 is a prime number
20 is not a prime number

Java 中的质数程序(优化方法)

以下方法与上述方法略有不同。在下面的程序中,我们使用 Math.sqrt(n) 有效地实现了逻辑,以减少不必要的迭代。这是一种优化方法。

示例

编译并运行

输出

67 is a prime number

查找两个数字之间的质数

我们还可以查找两个指定数字之间的质数。

输出

prime numbers between 2 and 10 are:
2
3
5
7

Java 质数程序选择题

1. 检查一个数字是否为质数的最有效算法是什么?

  1. 试除法
  2. 埃拉托斯特尼筛法
  3. 费马小定理
  4. 卢卡斯-莱默检验法
 

答案:b)

解释: 埃拉托斯特尼筛法是查找小于给定数字的所有质数的最有效算法。它的时间复杂度是 O(n log log n),使其比试除法快得多,尤其是对于更大的数字。


2. 以下哪项是质数的特征?

  1. 它们可以表示为另外两个数字的乘积。
  2. 它们只能被 1 和它们本身整除。
  3. 它们总是以数字 5 结尾。
  4. 它们总是奇数。
 

答案:b)

解释: 质数定义为大于 1 且只能被 1 和它们本身整除的数字。这个特征将质数与合数区分开来,合数有多个因子。


3. 在埃拉托斯特尼筛法算法中,查找直到给定限制 n 的所有质数的时间复杂度是多少?

  1. O(n)
  2. O(n log n)
  3. O(n^2)
  4. O(sqrt(n))
 

答案:d)

解释: 埃拉托斯特尼筛法算法查找直到给定限制 n 的所有质数的时间复杂度是 O(n log log n)。它在 n 的平方根范围内消除了每个质数的倍数,从而导致 O(sqrt(n)) 的时间复杂度。


4. 以下哪种优化可以提高试除法检查质数的效率?

  1. 循环从 2 开始,到数字的平方根结束。
  2. 使用米勒-拉宾素性检验。
  3. 仅检查奇数的整除性。
  4. 使用动态规划来存储以前计算的结果。
 

答案:a)

解释: 将试除法循环限制为仅检查到数字平方根的整除性,可以减少所需的迭代次数,从而提高试除法的效率。


5. 埃拉托斯特尼筛法算法中使用的布尔数组的意义是什么?

  1. 它存储到目前为止找到的质数。
  2. 它将质数的倍数标记为非质数。
  3. 它存储质数的索引。
  4. 它跟踪查找质数所需的迭代次数。
 

答案:b)

解释: 在埃拉托斯特尼筛法算法中,布尔数组将质数的倍数标记为非质数。它通过从考虑中消除质数的倍数来有效地识别质数,只留下数组中的质数。


下一个主题Java 程序