java如何打印素数
打印素数的方法
在Java中打印素数可以通过多种方法实现,以下介绍几种常见的实现方式。
使用基本循环判断素数
通过遍历2到n-1之间的所有数,判断是否能被整除。若不能被任何数整除,则为素数。
public class PrimeNumbers {
public static void main(String[] args) {
int n = 100; // 打印1到100之间的素数
for (int i = 2; i <= n; i++) {
boolean isPrime = true;
for (int j = 2; j < i; j++) {
if (i % j == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
System.out.print(i + " ");
}
}
}
}
优化循环范围
通过减少循环范围至√n,提高效率。
public class PrimeNumbersOptimized {
public static void main(String[] args) {
int n = 100;
for (int i = 2; i <= n; i++) {
boolean isPrime = true;
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
System.out.print(i + " ");
}
}
}
}
使用埃拉托斯特尼筛法
通过标记非素数的方式高效筛选素数。
public class SieveOfEratosthenes {
public static void main(String[] args) {
int n = 100;
boolean[] isPrime = new boolean[n + 1];
Arrays.fill(isPrime, true);
isPrime[0] = isPrime[1] = false;
for (int i = 2; i <= Math.sqrt(n); i++) {
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i) {
isPrime[j] = false;
}
}
}
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
System.out.print(i + " ");
}
}
}
}
使用递归方法判断素数
通过递归方式判断是否为素数。

public class PrimeRecursive {
public static boolean isPrime(int n, int divisor) {
if (n <= 2) return (n == 2);
if (n % divisor == 0) return false;
if (divisor * divisor > n) return true;
return isPrime(n, divisor + 1);
}
public static void main(String[] args) {
int n = 100;
for (int i = 2; i <= n; i++) {
if (isPrime(i, 2)) {
System.out.print(i + " ");
}
}
}
}
注意事项
- 基本循环方法适用于小范围数据,但效率较低。
- 埃拉托斯特尼筛法适合大范围数据,效率较高。
- 递归方法代码简洁,但可能因栈溢出问题不适用于大数。






