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
循环的之前的存储
,或者将其声明移到数组中。下面是。