[英]How to find prime numbers in an array of random numbers?
I have a problem with finding prime numbers in an array of randomly generated integers. 我在随机生成的整数数组中查找质数时遇到问题。
I tried using the 'for' loop to go through every element in my array to check whether it's a prime number or not. 我尝试使用“ for”循环遍历数组中的每个元素,以检查它是否是质数。 Although it prints some ints from the array, they are not prime numbers.
尽管它从数组中打印出一些整数,但它们不是素数。
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ą.");
}
}
}
Any solutions to this problem? 这个问题有解决方案吗? I started learning Java 4 days ago on my own.
我四天前开始学习Java。 So far everything goes well, I understand most of the basics.
到目前为止,一切进展顺利,我了解大部分基本知识。 But this problem seems too complex for me, a beginner.
但是对于初学者来说,这个问题对我来说似乎太复杂了。
Edit: I translated most of the code's variables to English from Polish, as my native language is Polish, hope it's understandable. 编辑:我将大多数代码变量从波兰语翻译成英语,因为我的母语是波兰语,希望它是可以理解的。
You're only setting isPrime
to true
at the beginning of printPrimeNumbers
. 你只设置
isPrime
到true
之初printPrimeNumbers
。 Once it finds the first composite number, it becomes false
, and you never reset it to true
again to test the next number. 一旦找到第一个复合数字,它将变为
false
,您再也不会将其重置为true
来测试下一个数字。
when writing Java code, try to split the task into functions(should serve a single purpose only). 在编写Java代码时,请尝试将任务拆分为多个函数(仅应用于一个目的)。 For your code extract the logic of determining Prime into a separate method and pass the random number to check whether it's prime or not, if yes then print otherwise don't print or do nothing.
对于您的代码,将确定质数的逻辑提取到单独的方法中,并传递随机数以检查其是否为质数,如果是,则打印,否则不打印或不执行任何操作。
Please check the below code snippet 请检查以下代码段
A simpler and efficient way to find the prime number 查找质数的一种简单有效的方法
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ą.");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.