1

intここには、それぞれを取り込みvecArray、一連の 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));
    }
  }
 }
}
4

1 に答える 1

1

1コードは2 回で割ろうとするため、resultArray.lengthは少なくとも 3 になります。

j = 1ではなく でループを開始しj = 0、 に置き換えresultArrayvector<int>ください。

因数分解は、数値が素数かどうかを判断する最速の方法ではないことに注意してください。素因数を数えるために素因数を保存する必要はありません。さらに、数値が複合であると判断したら、ループを終了できます。num最後に、 までの約数をすべて試してみる必要はありませsqrt(num)ん。numnum

于 2013-01-10T19:27:19.210 に答える