【发布时间】:2019-10-31 14:17:35
【问题描述】:
这是一个程序,用于确定 10 个数字数组中的元素是否为素数。主要的将被 -1 替换,其他的在打印时保持不变。
这对我来说似乎很好,但是当我使用 9 运行我的代码时,有些会得到 -1,这意味着 9 是素数(错误),有些返回 9(不是素数)。为什么我会遇到这种情况?有人可以帮忙吗
import java.util.Scanner;
public class Question5{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int[] array = new int [10];
for (int i = 0; i < array.length; i++){
System.out.println("Enter your number " + i);
array[i] = input.nextInt();
}
System.out.println("Before method: ");
for (int i = 0; i < array.length; i++){
System.out.print(array[i] + " ");
}
System.out.println();
prime(array);
System.out.println("After the method: ");
for (int i = 0; i < array.length; i++){
System.out.print(array[i] + " ");
}
System.out.println();
}
public static void prime(int[] list){
boolean isPrime = true;
int count = 0;
for (int i = 0; i < list.length; i++){
isPrime = true;
for (int j = 2; j < i; j++){
count = i;
if (list[i] % j == 0){
isPrime = false;
break;
}
if (list [i] == 0 || list[i] == 1){
isPrime = false;
break;
}
if (list [i] == 2){
isPrime = true;
list[count] = -1;
}
}
if (isPrime){
list[count] = -1;
}
}
}
}
【问题讨论】:
-
我认为你的第二个for循环应该是
j < list[i]