java - Java 中的素数数组

标签 java arrays

我想返回一个数组,该数组显示从 0 到我输入的任何数字之间一定范围内的所有素数。

对于从 05 的范围,我希望使用 [2,3,5] 返回数组。在任务中,我的教授告诉我,我应该用 0 填充整个数组,然后再用素数替换这些 0

目前我的代码没有返回正确的数组,因为我似乎没有访问数组中的下一个位置,但似乎总是将值分配给数组中的第一个位置。 我当前的结果数组不是 [2,3,5] 而是 [5,0,0,0,0]。 任何帮助将不胜感激。

public static int[] generierePrimzahlen(int bis){
int [] myAry = new int[bis];
Arrays.fill(myAry,0);
for(int i=0;i<myAry.length;i++){
      for (int nextprime=1; nextprime < bis; nextprime++){
          int counter = 0;
         // System.out.println(nextprime);
          if (istPrimzahl(nextprime)){
              myAry[counter] = nextprime;
              counter++;
          }

      }
     System.out.print(myAry[i]+" ");
  }

return myAry;


}

PS:我有一个功能方法(istPrimzahl),它检查某个数字是否是素数。

最佳答案

问题是您的计数器处于错误的范围内。 所以而不是增加。在第一个 for 循环的每次迭代中,您都声明一个新的计数器。这样当你将素数分配给数组时它就是0。

public static int[] generierePrimzahlen(int bis){
int [] myAry = new int[bis];
// Arrays.fill(myAry,0);    // no need, this is already been done at initialization
for(int i=0;i<myAry.length;i++){
  int counter = 0;

         // adding <= 'nextprime <= bis;' to check also the last number in the range
      for (int nextprime=1; nextprime <= bis; nextprime++){
         // int counter = 0; wrong scope
         // System.out.println(nextprime);
          if (istPrimzahl(nextprime)){
              myAry[counter] = nextprime;
              counter++;
          }

   }
    if(myAry[0] != 0)    // to get rid of displaying Zeros
       System.out.print(myAry[i]+" ");
  }

return myAry;


}

关于java - Java 中的素数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46875331/

相关文章:

java - SMTP 测量和评估

arrays - 如何从渲染列表中访问对象键?

c++ - 线段树数据结构中的数组大小

c++ - 如何转换(指针 vector )-->(指向指针数组的指针)

java - java中标记接口(interface)的意义是什么?为什么没有它们我们就不能继续下去?

java - Spring 依赖注入(inject) Autowiring Null

c++ - 什么数据类型的结构具有最大大小且元素是 FIFO?

java - JSON 数组到 ArrayList<List<String>>

java - IBM BlueMix 上的 Liferay 安装

java - 在 Java 中找不到适合 jdbc 的驱动程序