求解100以内的素数是一个常见的编程任务。素数是大于1且只能被1和自身整除的整数。我们可以通过遍历每个数,判断其是否为素数来求解100以内的素数。
解题思路:
实现代码:
public class PrimeNumbers {
public static void findPrimesUsingBruteForce(int limit) {
System.out.println("Prime numbers up to " + limit + ":");
for (int i = 2; i <= limit; i++) {
if (isPrime(i))
System.out.print(i + " ");
}
}
public static boolean isPrime(int num) {
if (num < 2)
return false;
for (int i = 2; i < num; i++) {
if (num % i == 0)
return false;
}
return true;
}
}
优缺点:
解题思路:
实现代码:
public class PrimeNumbers {
public static void sieveOfEratosthenes(int limit) {
boolean[] isPrime = new boolean[limit + 1];
for (int i = 0; i <= limit; i++)
isPrime[i] = true;
for (int p = 2; p * p <= limit; p++) {
if (isPrime[p]) {
for (int i = p * p; i <= limit; i += p)
isPrime[i] = false;
}
}
System.out.println("Prime numbers up to " + limit + ":");
for (int i = 2; i <= limit; i++) {
if (isPrime[i])
System.out.print(i + " ");
}
}
}
优缺点:
解题思路:
实现代码:
public class PrimeNumbers {
public static void optimizedSieveOfEratosthenes(int limit) {
boolean[] isPrime = new boolean[limit + 1];
for (int i = 0; i <= limit; i++)
isPrime[i] = true;
for (int p = 2; p * p <= limit; p++) {
if (isPrime[p]) {
for (int i = p * p; i <= limit; i += p)
isPrime[i] = false;
}
}
System.out.println("Prime numbers up to " + limit + ":");
for (int i = 2; i <= limit; i++) {
if (isPrime[i])
System.out.print(i + " ");
}
}
}
优缺点: