java用筛选法编写n之内的素数
时间: 2024-09-29 13:06:55 浏览: 37
Java中可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)来生成小于或等于给定数值n的所有质数。这个算法基于一个基本原理:所有的合数都可以表示为两个较小质数的乘积。以下是简单的步骤:
```java
public class PrimeNumbers {
public static void sieveOfEratosthenes(int n) {
boolean[] primes = new boolean[n+1]; // 创建一个布尔数组,初始值全部设为true
for (int i = 2; i * i <= n; i++) { // 只需要检查到√n,因为大于该数的因子一定有一个已经小于√n
if (primes[i]) {
// 将i的倍数标记为非质数
for (int j = i * i; j <= n; j += i)
primes[j] = false;
}
}
// 输出所有小于或等于n的质数
for (int p = 2; p <= n; p++)
if (primes[p])
System.out.print(p + " ");
}
public static void main(String[] args) {
int num = 50; // 要查找的上限
sieveOfEratosthenes(num);
}
}
```
在这个例子中,`sieveOfEratosthenes`函数首先初始化一个布尔数组`primes`,然后从2开始遍历,将每个素数的倍数标记为非质数。最后,打印出所有标记为质数的元素。
阅读全文