Outputting correct prime numbers in Java
本问题已经有最佳答案,请猛点这里访问。
我目前正在执行的Java程序有一个小问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | public class PrimeNumbers { public static void computePrimeNumbers(boolean[] prime, int n) { for (int i = 2; i < n; i++) { if (prime[i] == true) { for (int j = 2; j < n; j++) { if ((j%i == 0) && (j != i)) { prime[j] = false; //System.out.println(j +" =" + prime[j]); } } } } } public static void main(String[] args) { int n = 13; boolean[] prime = new boolean[n]; prime[0] = false; prime[1] = false; for (int i = 2; i < n; i++) { prime[i] = true; } computePrimeNumbers(prime, n); for (int i = 0; i < n; i++) { System.out.println(i +" =" + prime[i]); } } } |
如果整数(i)是质数,则程序应输出" true",否则输出false。 嵌套的for循环中if语句中注释掉的一段代码为我提供了正确的布尔语句(即运行时显示的不是整数的整数),但是main中的最后一个for循环似乎只是显示 提供给质数数组的初始值-因此,我假设从某个地方某种程度上重写了computePrimeNumbers的结果。
感谢您的任何帮助。
1 | if (prime[i] = true) { // should be if(prime[i] == true) or just if(prime[i]) |
1 2 3 4 5 6 7 8 9 | if (prime[i] == true) { for (int j = 2; j < n; j++) { if ((j % i == 0) && (j != i)) { prime[j] = false; System.out.println(j +" =" + prime[j]); } } } |
输出量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 4 = false 6 = false 8 = false 10 = false 12 = false 6 = false 9 = false 12 = false 10 = false 0 = false 1 = false 2 = true 3 = true 4 = false 5 = true 6 = false 7 = true 8 = false 9 = false 10 = false 11 = true 12 = false |