java判断素数多种方法代码
时间: 2024-05-06 17:02:21 浏览: 81
以下是Java中判断素数的多种方法:
方法1:暴力枚举法
```
public static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
```
方法2:优化的暴力枚举法
```
public static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
if (num == 2 || num == 3) {
return true;
}
if (num % 6 != 1 && num % 6 != 5) {
return false;
}
for (int i = 5; i <= Math.sqrt(num); i += 6) {
if (num % i == 0 || num % (i + 2) == 0) {
return false;
}
}
return true;
}
```
方法3:埃氏筛法
```
public static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
boolean[] isPrime = new boolean[num + 1];
Arrays.fill(isPrime, true);
isPrime[0] = false;
isPrime[1] = false;
for (int i = 2; i <= Math.sqrt(num); i++) {
if (isPrime[i]) {
for (int j = i * i; j <= num; j += i) {
isPrime[j] = false;
}
}
}
return isPrime[num];
}
```
方法4:线性筛法
```
public static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
int[] primes = new int[num + 1];
boolean[] isPrime = new boolean[num + 1];
int count = 0;
Arrays.fill(isPrime, true);
isPrime[0] = false;
isPrime[1] = false;
for (int i = 2; i <= num; i++) {
if (isPrime[i]) {
primes[count++] = i;
}
for (int j = 0; j < count && i * primes[j] <= num; j++) {
isPrime[i * primes[j]] = false;
if (i % primes[j] == 0) {
break;
}
}
}
return isPrime[num];
}
```
阅读全文