gpt4 book ai didi

java - 从数组中分离质数

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:07:42 25 4
gpt4 key购买 nike

public class HelloWorld {

public static void main(String []args) {

int [] arr = {2, 5, 9, 6, 7, 13, 24, 42, 8};
int [] arr1 = new int[4];
int [] arr2 = new int[arr.length - arr1.length];

for(int i = 0; i < arr.length; i++) {
for(int j = 2; j <= arr[i]/2; j++) {
if(arr[i] % j == 0) {
System.out.println("Number is not prime " + arr[i]);
break;
}
else {
System.out.println("Number is prime " + arr[i]);
break;
}
}
}
}
}

程序应该检查数字数组并打印给定数字是否为质数。有问题,因为前 2 个未标记为素数。那我就不知道为什么把9当质数了。

最佳答案

您的代码中存在多个问题。

  1. 为什么不把 2 当作质数。正如其他人所解释的那样,j <= arr[i]/2是罪魁祸首。根据这个条件,j <= 1j == 2 .因此,循环不会被执行。
  2. 为什么取9为质数。第一次当j == 2arr[i] == 9 .作为,9%2 != 0 , 数字打印为素数。

    for(int j = 2; j <= arr[i]/2; j++){
    if(arr[i] % j == 0){
    System.out.println("Number is not prime " + arr[i]);
    break;
    }
    else {
    System.out.println("Number is prime " + arr[i]);
    break;
    }
    }

建议: 而不是检查 arr[i]/2 ,您可以使用数字的平方根来检查。

如有需要可引用以下程序:

public class PrimeNumber {
public static void main(String []args){

int [] arr = {2,3,4,5,9,6,7,13,24,42,8,400,101};
int [] arr1 = new int[4];
int [] arr2 = new int[arr.length - arr1.length];
boolean flag = true;
for(int i = 0; i < arr.length; i++){
if(arr[i] == 2 || arr[i] == 3 )
{
System.out.println("Number is prime " + arr[i]);
continue;
}
flag = true;
for(int j = 2; j <= Math.sqrt( arr[i] ); j++){
if(arr[i] % j == 0){
System.out.println("Number is not prime " + arr[i]);
flag = false;
break;
}
}
if ( flag )
{
System.out.println("Number is prime " + arr[i]);
}
}
}
}

关于java - 从数组中分离质数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52180973/

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