我应该评估一个整数数组并确定它们是否是素数。一旦我这样做,我必须返回(主要)一系列布尔值。
public static boolean [] Advanced_7(int Array []){
boolean [] verdict = new boolean [Array.length];
for(int i = 0; i < Array.length; i++)
{
verdict[i] = true;
for(int j = 2; j <= Array[i]; j++)
{
if (Array[i] % j == 0)
{
verdict[i] = false;
}
}
}
return verdict;
}
答案 0 :(得分:1)
只是一些一般提示:
首先:您可以简化您检查数字是否为素数的方式;你只需要检查 half 你要检查的整数的元素。
第二:一旦你知道这个数字是非素数,你为什么要继续检查?一旦知道该数字是非素数,就打破for
循环。
第三:要将结果输出到控制台,您不能简单地打印对象(数组是一个对象,因此无论打印得到什么都看起来很奇怪)。在main
过程中,将结果存储在变量中,并使用for
循环打印每个条目。
如评论中所述,您应该使用Java命名约定。下面的代码是对原始代码的重写,使用这些约定并应用我上面给出的建议。
public static boolean[] checkForPrimes(int[] numbers) {
/*
The name for the function should be a verbe, and start
with a lower case letter.
The input parameter for the function is an object, and
must also start with a lower case letter.
*/
boolean[] veredict = new boolean[numbers.length];
for(i = 0; i < numbers.length; i++) {
veredict[i] = true;
// You only need to check up to half each number
for(j = 2; j <= numbers[i] / 2; j++) {
if(numbers[i] % j == 0) {
veredict[i] = false;
break; // once you know the number is non-prime
// exit the loop
}
}
}
return veredict;
}
public static void printResult(int[] numbers) {
boolean[] veredict = checkForPrimes(numbers);
// You must traverse the arrays to print them out:
for(i = 0; i < numbers.length; i++) {
System.out.println(numbers[i] + " " + veredict[i]);
}
}
答案 1 :(得分:0)
以下内容包含一些无法解释的更改。 如果你能解释它们,请使用它们。
int element = Array[i];
verdict[i] = element % 2 == 0;
if (verdict[i])
{
for (int j = 3; j <= element / 2; j += 2)
{
if (element % j == 0)
{
verdict[i] = false;
break;
}
}
}
对于快速打印,您可以使用:
System.out.println(Arrays.toString(verdict));