gpt4 book ai didi

java - isPrime 对于相同的值返回不同的结果?

转载 作者:行者123 更新时间:2023-11-30 01:44:27 24 4
gpt4 key购买 nike

这是一个程序,用于确定 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;
}

}
}
}

最佳答案

您有三个错误:

  1. 您正在更新列表[count]而不是列表[i]
  2. 内循环条件错误。应该是j < list[i]j *j <= list[i]
  3. 您的代码标识 01作为素数,这是不正确的。您应该测试if (list [i] == 0 || list[i] == 1)在内循环之前。

代码应如下所示:

public static void prime(int[] list){
boolean isPrime = true;
int count = 0;

for (int i = 0; i < list.length; i++){
isPrime = true;
if (i < 2) {
isPrime = false;
} else {
for (int j = 2; j * j <= list[i]; j++){
count = i;
if (list[i] % j == 0){
isPrime = false;
break;
}
if (list [i] == 2){
isPrime = true;
list[i] = -1;
}
}
}
if (isPrime){
list[i] = -1;
}

}
}

例如:

Enter your number 0
0
Enter your number 1
1
Enter your number 2
2
Enter your number 3
3
Enter your number 4
4
Enter your number 5
5
Enter your number 6
6
Enter your number 7
7
Enter your number 8
8
Enter your number 9
9
Before method:
0 1 2 3 4 5 6 7 8 9
After the method:
0 1 -1 -1 4 -1 6 -1 8 9

关于java - isPrime 对于相同的值返回不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58645288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com