gpt4 book ai didi

java - 操作数组和 vector

转载 作者:太空宇宙 更新时间:2023-11-04 07:52:06 24 4
gpt4 key购买 nike

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

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

最佳答案

您的代码将尝试除以 1两次,所以resultArray.length至少是三个。

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

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

关于java - 操作数组和 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14265706/

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