这里是将素数保留到100并将它们存储在数组中的代码。但是问题是代码无法正常工作,因为第二个for循环直到更改i才等待。谁能帮助我找出问题所在?
synchronized (this) {
boolean stop = false;
boolean change = false;
int primenumber[]= new int[20];
System.out.println("The prime numbers are : ");
for (int i = 1; i <= 100; i++) {
int count = 0;
change = true;
notify();
for (int num = i; num >= 1; num--) {
if (i % num == 0) {
count = count + 1;
}
}
if (count == 2) {
if (!stop) {
for (int ab = 0; ab <= 20; ab++) {
primenumber[ab] = i;
while (!change) {
try {
wait();
} catch (InterruptedException e) {
}
}
}
}
}
}
}
答案 0 :(得分:-1)
int num = 0;
System.out.println("Please Enter n.");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
scanner.close();
System.out.println("\nPrime Numbers up to " + n + ".");
for (int i = 1; i <= n; i++) {
int counter = 0;
for (num = i; num >= 1; num--) {
if (i % num == 0) {
counter++;
}
}
// Counter = 2 means number is only divisible by 1 and the number itself. So it's a prime number.
if (counter == 2)
{
System.out.print(i + " ");
}
}