java 如何质数
判断质数的方法
质数是指大于1的自然数,除了1和它本身外没有其他因数。以下是一个用Java判断质数的常见方法:
public static boolean isPrime(int number) {
if (number <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(number); i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
优化后的质数判断方法
对于较大的数字,可以进一步优化性能,跳过偶数检查:
public static boolean isPrimeOptimized(int number) {
if (number <= 1) {
return false;
}
if (number == 2) {
return true;
}
if (number % 2 == 0) {
return false;
}
for (int i = 3; i <= Math.sqrt(number); i += 2) {
if (number % i == 0) {
return false;
}
}
return true;
}
打印范围内的质数
以下方法可以打印出指定范围内的所有质数:
public static void printPrimesInRange(int start, int end) {
for (int i = start; i <= end; i++) {
if (isPrime(i)) {
System.out.print(i + " ");
}
}
}
使用埃拉托斯特尼筛法
对于需要大量质数的情况,筛法更为高效:
public static void sieveOfEratosthenes(int limit) {
boolean[] prime = new boolean[limit + 1];
Arrays.fill(prime, true);
prime[0] = false;
prime[1] = false;
for (int p = 2; p * p <= limit; p++) {
if (prime[p]) {
for (int i = p * p; i <= limit; i += p) {
prime[i] = false;
}
}
}
for (int i = 2; i <= limit; i++) {
if (prime[i]) {
System.out.print(i + " ");
}
}
}
质数应用示例
生成前N个质数:

public static List<Integer> generateFirstNPrimes(int n) {
List<Integer> primes = new ArrayList<>();
int num = 2;
while (primes.size() < n) {
if (isPrime(num)) {
primes.add(num);
}
num++;
}
return primes;
}
这些方法涵盖了Java中处理质数的常见需求,从简单的判断到高效的筛法实现。根据具体应用场景选择合适的方法,对于小范围检查使用简单方法,大范围计算则推荐筛法。






