1

我这里有代码,可以通过一系列 for 循环尝试确定它是否是质数intvecArray但是,当我运行程序时,我无法成功地将给定数组的每个素数找到/添加到提供的向量中。我错过了什么?

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));
    }
  }
 }
}
4

1 回答 1

1

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

您应该在j = 1而不是开始循环j = 0,并resultArrayvector<int>.

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

于 2013-01-10T19:27:19.210 回答