Java 整数数组到素数到布尔数组
我应该计算一个整数数组并确定它们是否为素数。一旦我这样做了,我必须返回(main)一个布尔数组Java 整数数组到素数到布尔数组,java,boolean,Java,Boolean,我应该计算一个整数数组并确定它们是否为素数。一旦我这样做了,我必须返回(main)一个布尔数组 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
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;
}
publicstaticboolean[]Advanced_7(int数组[]){
boolean[]裁决=新的boolean[Array.length];
for(int i=0;i 对于(int j=2;j仅一些一般提示:
第一:检查数字是否为素数的方法可以简化;您只需检查整数的一半即可
第二:一旦你知道这个数字是非素数,为什么还要继续检查?一旦你知道这个数字是非素数,就打破for
循环
第三:要将结果输出到控制台,您不能简单地打印对象(数组是一个对象,因此打印的任何get看起来都非常复杂)。在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]);
}
}
publicstaticboolean[]checkForPrimes(int[]number){
/*
函数的名称应该是一个verbe和start
用小写字母。
函数的输入参数是一个对象,并且
还必须以小写字母开头。
*/
boolean[]veredict=新的boolean[numbers.length];
对于(i=0;i 对于(j=2;j而言,以下包含一些无法解释的变化。
如果你能解释它们,就用它们
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;
}
}
}
这是什么语言?@AntoinePelletier也可以是java。欢迎使用。要求家庭作业帮助的问题必须包括您迄今为止为解决问题所做工作的摘要,以及您解决问题的困难描述。请使用“编辑”在问题下方链接,而不是在注释中发布杂项片段。请记住,讲师的工作是帮助您理解这些概念;尝试直接提问。数组是一个对象,因此您无法直接打印它。一旦执行函数,您需要遍历数组然后打印每个元素。第一点:实际检查平方根是enough@Henry的确……但让我们保持简单,只使用初等运算;)for(intj=3;j*j@Henry确实更好,最好j
System.out.println(Arrays.toString(verdict));