Java 操纵数组和向量

Java 操纵数组和向量,java,Java,我这里有一个代码,它在vecArray中获取每个int,并通过一系列for循环来确定它是否是质数。但是,当我运行该程序时,我无法成功地找到给定数组的每个素数/将其添加到提供的向量中。我错过了什么 Vector<Integer> primeVec = new Vector<Integer>(); Vector<Integer> storage = new Vector<Integer>(); for ( int num : vecArray) {

我这里有一个代码,它在
vecArray
中获取每个
int
,并通过一系列for循环来确定它是否是质数。但是,当我运行该程序时,我无法成功地找到给定数组的每个素数/将其添加到提供的向量中。我错过了什么

Vector<Integer> primeVec = new Vector<Integer>();
Vector<Integer> storage = new Vector<Integer>();
for ( int num : vecArray)  {
    //create array size of num
    resultArray = new int[num];
    for(int j = 1; j <= sqrt(num); j++)  {
        int result = num % j;
        if (result == 0)  {
             storage.add(j);
        }
    }
    //if resultArray has only two integers, then it must be prime
    int size = storage.size();
    if (size == 2)  {
       //add each 
       primeVec.add(num);
        System.out.println("You added " + num + " to the Vector for primes!");

    } 
    //print out all primes in vec
    for (int e = 0; e < primeVec.size(); e++)  {
     System.out.println("The prime in element number " + e + " is: " + primeVec.get(e));
    }
  }
 }
}
Vector primeVec=new Vector();
向量存储=新向量();
for(int num:vecArray){
//创建num的数组大小
resultArray=新整数[num];

对于(int j=1;j您的代码将尝试除以
1
两次,因此
resultArray.length
将至少为三次

您应该从
j=1
而不是
j=0
开始循环,并用
向量替换
resultArray


请注意,因子分解并不是确定数字是否为素数的最快方法。您不需要存储素数因子来计算它们。此外,一旦您确定一个数字是复合的,您就可以结束循环。最后,您不需要尝试所有小于
num
:如果您尝试小于code>sqrt(num)的因子
并且没有一个除法
num
,那么您肯定知道
num
是素数。

您的代码将尝试除以
1
两次,因此
resultArray.length
将至少为三次

您应该从
j=1
而不是
j=0
开始循环,并用
向量替换
resultArray


请注意,因子分解并不是确定数字是否为素数的最快方法。您不需要存储素数因子来计算它们。此外,一旦您确定一个数字是复合的,您就可以结束循环。最后,您不需要尝试所有小于
num
:如果您尝试小于code>sqrt(num)的因子
并且它们都不能除
num
,那么你肯定知道
num
是素数。

所有数字都可以除以1。你应该从2开始for循环。即使你的代码有效,我想你也应该看看这个相关的问题,让你的代码更清楚。所有数字都可以除以1。你应该开始你的for循环在2。即使你的代码有效,我想你也应该看看这个相关的问题,让你的代码更清楚。j for循环中的resultaray?Jay是的,如果你想继续沿着分解路径,你应该用一个可以增长的向量替换
j
循环中的
resultaray
。嗯,我是st我得不到我想要的结果need@Jay您可能想发布问题的更新,然后显示修复后的结果。@Jay您的新代码中有几个问题:因为您在
sqrt
(应该是
Math.sqrt
)素数将产生
1
的计数,而不是
2
,因为您不会一直到
num
这是第二个除数。此外,您应该清除
for j
循环之前的
存储,或者将其声明移到数组中。这是。j for循环中的resultArray?@Jay Yes,如果你想继续沿着分解路线,你应该用一个可以增长的向量替换
j
循环中的
resultArray
。嗯,我仍然没有得到我想要的结果need@Jay您可能希望发布问题的更新,然后显示修复后的情况。@Jay您的ne中有几个问题w代码:因为您在
sqrt
处停止(应该是
Math.sqrt
)素数将产生
1
的计数,而不是
2
,因为您不会一直到
num
,后者是第二个除数。此外,您应该清除j
循环的
之前的
存储
,或者将其声明移到数组中。下面是。