如何打印素数JAVA
打印素数的Java实现
素数是只能被1和自身整除的自然数。以下是几种在Java中打印素数的方法:
方法1:基础检查法
通过遍历每个数字并检查其是否为素数来实现。对于每个数字n,检查2到n-1之间是否有能整除n的数。

public class PrimeNumbers {
public static void main(String[] args) {
int limit = 100;
for (int i = 2; i <= limit; i++) {
if (isPrime(i)) {
System.out.print(i + " ");
}
}
}
private static boolean isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i < n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
方法2:优化检查法
检查范围可以缩小到√n,因为如果n不是素数,它必有一个因数小于或等于√n。

private static boolean isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
方法3:埃拉托斯特尼筛法
适用于高效生成一定范围内的所有素数。通过标记非素数来筛选素数。
public class SieveOfEratosthenes {
public static void main(String[] args) {
int limit = 100;
boolean[] isPrime = new boolean[limit + 1];
Arrays.fill(isPrime, true);
isPrime[0] = isPrime[1] = false;
for (int i = 2; i * i <= limit; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= limit; j += i) {
isPrime[j] = false;
}
}
}
for (int i = 2; i <= limit; i++) {
if (isPrime[i]) {
System.out.print(i + " ");
}
}
}
}
方法4:使用Java 8流式处理
结合流和Lambda表达式实现素数打印。
import java.util.stream.IntStream;
public class PrimeStream {
public static void main(String[] args) {
int limit = 100;
IntStream.rangeClosed(2, limit)
.filter(PrimeStream::isPrime)
.forEach(n -> System.out.print(n + " "));
}
private static boolean isPrime(int n) {
return n > 1 && IntStream.rangeClosed(2, (int) Math.sqrt(n))
.noneMatch(i -> n % i == 0);
}
}
选择建议
- 对于小范围素数检查,基础或优化方法足够。
- 对于大范围素数生成,筛法效率更高。
- 流式处理适合现代Java编程风格,但性能略低于筛法。





