我在查找随机生成的整数数组中的素数时遇到问题。我尝试使用'for'循环来遍历我的数组中的每个元素,以检查它是否是素数。虽然它从数组中打印出一些int,但它们不是素数。public static void main(String[] args) {
defineTable();
printPrimeNumbers();
}
private static int[] tab;
private static int[] defineTable(){
tab = new int[100];
for (int i = 0; i < tab.length; i++){
tab[i] = randomFill();
}
return tab;
}
private static int randomFill (){
Random rand = new Random();
int randomInt = rand.nextInt();
return randomInt;
}
private static void printPrimeNumbers(){
boolean isPrime = true;
for (int i = 0; i < tab.length; i++){
int num = tab[i];
for (int j = 2; j < num; j++){
if (num % j == 0){
isPrime = false;
break;
}
}
if(isPrime){
System.out.println(num + " jest liczbą pierwszą.");
}
}
}解决这个问题的任何方法?我4天前开始独自学习Java。到目前为止一切顺利,我理解大部分基础知识。但这个问题对我来说似乎太复杂了,一个初学者。编辑:我将大部分代码的变量翻译成波兰语的英语,因为我的母语是波兰语,希望这是可以理解的。
2 回答
叮当猫咪
TA贡献1776条经验 获得超12个赞
在编写Java代码时,尝试将任务拆分为函数(仅用于单个目的)。为了你的代码提取确定Prime的逻辑到一个单独的方法并传递随机数来检查它是否是素数,如果是,则打印否则不打印或什么也不做。
请检查以下代码段
一种更简单有效的方法来查找素数
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ą."); } }
慕斯709654
TA贡献1840条经验 获得超5个赞
你只设置isPrime
至true
之初printPrimeNumbers
。一旦找到第一个复合数字,它就变成了false
,你再也不会把它true
重新设置为测试下一个数字。
添加回答
举报
0/150
提交
取消