Java 如何在随机数数组中找到素数?

Java 如何在随机数数组中找到素数?,java,Java,在随机生成的整数数组中查找素数有问题 我尝试使用“for”循环遍历数组中的每个元素,以检查它是否为素数。虽然它从数组中打印一些整数,但它们不是素数 publicstaticvoidmain(字符串[]args){ 可定义(); 打印素数(); } 私有静态int[]选项卡; 私有静态int[]定义表(){ tab=新整数[100]; 对于(int i=0;i

在随机生成的整数数组中查找素数有问题

我尝试使用“for”循环遍历数组中的每个元素,以检查它是否为素数。虽然它从数组中打印一些整数,但它们不是素数

publicstaticvoidmain(字符串[]args){
可定义();
打印素数();
}
私有静态int[]选项卡;
私有静态int[]定义表(){
tab=新整数[100];
对于(int i=0;i
这个问题有什么解决办法吗?我四天前开始自学Java。到目前为止一切进展顺利,我了解大部分基本情况。但是这个问题对我这个初学者来说太复杂了


编辑:我将大部分代码的变量从波兰语翻译成英语,因为我的母语是波兰语,希望可以理解。

您只是在
printPrimeNumbers
的开头将
isPrime
设置为
true
。一旦找到第一个复合数字,它将变为
false
,您永远不会再次将其重置为
true
,以测试下一个数字。

编写Java代码时,尝试将任务拆分为函数(应仅用于一个目的)。对于您的代码,将确定素数的逻辑提取到一个单独的方法中,并传递随机数以检查它是否为素数,如果是,则打印,否则不打印或不执行任何操作

请检查下面的代码片段

求素数的一种简单有效的方法

public static boolean isPrime(int n) {  
           if (n <= 1) {  
               return false;  
           }  
           for (int i = 2; i <= Math.sqrt(n); i++) {  
               if (n % i == 0) {  
                   return false;  
               }  
           }  
           return true;  
       }  


private static void printPrimeNumbers(){
        for (int i = 0; i < tab.length; i++){
        if(isPrime(tab[i])){ 
        System.out.println(tab[i] + " jest liczbą pierwszą.");
       } 

    }
公共静态布尔值isPrime(int n){

如果(太好了,它现在起作用了。谢谢你的快速回答。我从来没有想到我会这么快得到我的答案!你给了提问者全新的有效代码,而完全忽略了他们真正的问题,这使得他们的代码不起作用。@Joseph Sible,我试图解释如何在思考部分完成事情,我提供了一种有效的方法,我将解释更多关于纠正代码的内容。也有人问我这个问题有什么解决方案吗?我4天前开始自学Java。到目前为止一切顺利,所以我提供了解决这个问题的版本:我在随机生成的整数数组中查找素数时遇到了问题。但是,是的,我应该帮助更多的人集中精力要更正现有解决方案并找到问题的根本原因,建议您将硬编码2作为第一个素数,从3开始,然后递增2。