筛选法输出素数java
时间: 2023-11-12 22:57:44 浏览: 103
筛选法是一种常见的输出素数的方法,其基本思想是从2开始,将每个素数的倍数都标记成合数,直到筛子无法再筛下去为止。以下是Java代码实现:
```java
public static void sieveOfEratosthenes(int n) {
boolean[] prime = new boolean[n + 1];
Arrays.fill(prime, true);
for (int p = 2; p * p <= n; p++) {
if (prime[p]) {
for (int i = p * p; i <= n; i += p) {
prime[i] = false;
}
}
}
for (int i = 2; i <= n; i++) {
if (prime[i]) {
System.out.print(i + " ");
}
}
}
```
相关问题
筛选法求素数java
好的,以下是筛选法求素数的Java代码:
```java
public static void sieveOfEratosthenes(int n) {
boolean[] prime = new boolean[n + 1];
Arrays.fill(prime, true);
for (int p = 2; p * p <= n; p++) {
if (prime[p]) {
for (int i = p * p; i <= n; i += p) {
prime[i] = false;
}
}
}
for (int i = 2; i <= n; i++) {
if (prime[i]) {
System.out.print(i + " ");
}
}
}
```
这个算法的思路是先将所有数标记为素数,然后从2开始,将其倍数标记为非素数,最后输出所有未被标记的数,即为素数。
java筛选法求素数
筛选法(Sieve of Eratosthenes)是一种用于求解素数的经典算法,它可以高效地找出一定范围内的所有素数。下面是Java中使用筛选法求素数的示例代码:
```java
public class PrimeNumbers {
public static void main(String[] args) {
int n = 100; // 求解范围为1到100的素数
boolean[] isPrime = new boolean[n + 1]; // 初始化一个布尔数组,默认值为false
// 初始化数组,假设所有数都是素数
for (int i = 2; i <= n; i++) {
isPrime[i] = true;
}
// 筛选素数
for (int i = 2; i * i <= n; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i) {
isPrime[j] = false;
}
}
}
// 输出素数
System.out.println("素数列表:");
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
System.out.print(i + " ");
}
}
}
}
```
上述代码中,我们使用一个布尔数组`isPrime`来表示每个数是否为素数。首先将数组中所有元素初始化为`true`,然后从2开始遍历数组,如果当前数字是素数,则将其倍数标记为非素数。最后遍历数组输出所有素数。
阅读全文