我正在努力使eratosthenes筛子,我目前有一个问题。 问题是在计算方法中,程序不会继续下一个素数。 我认为问题是与while循环,但我不知道如何解决它。有人能帮我吗?eratosthenes的筛子问题java
谢谢
import java.util.*;
import java.io.*;
public class Primes_below_N {
static Vector<Integer> numbers = new Vector<Integer>();
static BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
public static void main(String[] args) throws IOException {
System.out.print("Please enter a number: ");
int LIMIT = Integer.parseInt(br.readLine());
populate(LIMIT);
calculatePrimes(LIMIT);
print(numbers);
}
// populate a 'numbers' with a numbers upto limit
public static void populate(int limit) {
for (int i = 1; i <= limit; i++) {
numbers.add(i);
}
}
// calculate prime numbers
public static void calculatePrimes(int limit) {
int p = 2;
int nextPrime = 1;
while (Math.pow(p, 2) < limit) {
for (int i = 0; i < numbers.size(); ++i) {
if (numbers.get(i) % 2 == 0 && numbers.get(i) != i) {
numbers.remove(i);
}
}
p = numbers.get(nextPrime);
nextPrime += 1;
}
}
public static void print(Vector<Integer> list) {
for (int i : list) {
System.out.println(i);
}
}
}
it still d没有工作,如果你提出的改进。 – 2011-04-24 16:08:53
@ user681159:我早先检查了代码并完全发布。同时检查测试结果。 – Favonius 2011-04-24 16:21:32