如何从 Java 中的数组中找到所有素数
How can I find all prime numbers from array in Java
我想从数组中找到所有素数并在主程序中打印它们 class。
public List<Integer> getListOfPrimes(int[] source) {
List<Integer> result = new ArrayList<>();
for (int i = 0; i < source.length; i++) {
if (primeCheck(source[i] == true)
result.add();
}
return result;
}
private boolean primeCheck(int value) {
if (value < 2) return false;
for (int i = 2; i <= value / 2; i++) if (value % i == 0) return false;
return true;
}
}
我有 int[] source = {2,4,5,8,13,22}
我想要 return 素数列表:2,5,13
您提供的代码示例对于该嵌套循环所需的任务而言似乎过于复杂。
当我过去查找算法来查找质数时,我遇到了 this sit 站点(请注意,有多个网站提供相同的代码)。
在你的情况下,我会创建一个接受 int[] 作为参数的静态方法,并在下面的示例中修改 n 变量以从数组中提取一个整数来测试它是否为质数。
public class PrimeExample{
public static void main(String args[]){
int i,m=0,flag=0;
int n=3;//it is the number to be checked
m=n/2;
if(n==0||n==1){
System.out.println(n+" is not prime number");
}else{
for(i=2;i<=m;i++){
if(n%i==0){
System.out.println(n+" is not prime number");
flag=1;
break;
}
}
if(flag==0) { System.out.println(n+" is prime number"); }
}//end of else
}
}
你的代码做了它应该做的,但有点令人困惑。
作为一项改进,您可以将 prim 检查包装在一个函数中,使其余代码更易于阅读:
private boolean primeCheck(int value){
if(value < 2) return false;
for(int i = 2; i <= value / 2; i++) if(value % i == 0) return false;
return true;
}
然后可以逐个输出质数,如您的示例:
System.out.print("Prime Numbers: ");
for(int i = 0; i < array1.length; i++) {
if(primeCheck(array1[i])) System.out.print(array1[i] + ", ");
}
System.out.println("");
或者通过将质数打包成一个列表作为一个整体:
List<Integer> result = new ArrayList<>();
for(int i = 0; i < array1.length; i++) {
if(primeCheck(array1[i])) result.add(array1[i]);
}
System.out.println("Prime Numbers: " + Arrays.toString(result.toArray()));
一个功能齐全的测试项目:
import java.util.*;
public class Main {
public static void main(String[] args) {
new Main(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17 });
}
public Main(int[] array1) {
List<Integer> result = new ArrayList<>();
for(int i = 0; i < array1.length; i++) {
if(primeCheck(array1[i])) result.add(array1[i]);
}
System.out.println("Prime Numbers: " + Arrays.toString(result.toArray()));
}
private boolean primeCheck(int value){
if(value < 2) return false;
for(int i = 2; i <= value / 2; i++) if(value % i == 0) return false;
return true;
}
}
修改示例returns结果为List<Integer>
.
import java.util.*;
public class Main {
public static void main(String[] args) {
Main main = new Main();
List<Integer> result = main.getListOfPrimes(new int[] { 1, 2, 3, 4, 5, 6 });
// Print array from list
System.out.println("Prime Numbers: " + Arrays.toString(result.toArray()));
// Iterate list
for(int i: result)
System.out.println(i);
}
public List<Integer> getListOfPrimes(int[] source) {
List<Integer> result = new ArrayList<>();
for(int i = 0; i < source.length; i++) {
if(primeCheck(source[i])) result.add(source[i]);
}
return result;
}
private boolean primeCheck(int value){
if(value < 2) return false;
for(int i = 2; i <= value / 2; i++) if(value % i == 0) return false;
return true;
}
}
我想从数组中找到所有素数并在主程序中打印它们 class。
public List<Integer> getListOfPrimes(int[] source) {
List<Integer> result = new ArrayList<>();
for (int i = 0; i < source.length; i++) {
if (primeCheck(source[i] == true)
result.add();
}
return result;
}
private boolean primeCheck(int value) {
if (value < 2) return false;
for (int i = 2; i <= value / 2; i++) if (value % i == 0) return false;
return true;
}
}
我有 int[] source = {2,4,5,8,13,22}
我想要 return 素数列表:2,5,13
您提供的代码示例对于该嵌套循环所需的任务而言似乎过于复杂。 当我过去查找算法来查找质数时,我遇到了 this sit 站点(请注意,有多个网站提供相同的代码)。
在你的情况下,我会创建一个接受 int[] 作为参数的静态方法,并在下面的示例中修改 n 变量以从数组中提取一个整数来测试它是否为质数。
public class PrimeExample{
public static void main(String args[]){
int i,m=0,flag=0;
int n=3;//it is the number to be checked
m=n/2;
if(n==0||n==1){
System.out.println(n+" is not prime number");
}else{
for(i=2;i<=m;i++){
if(n%i==0){
System.out.println(n+" is not prime number");
flag=1;
break;
}
}
if(flag==0) { System.out.println(n+" is prime number"); }
}//end of else
}
}
你的代码做了它应该做的,但有点令人困惑。
作为一项改进,您可以将 prim 检查包装在一个函数中,使其余代码更易于阅读:
private boolean primeCheck(int value){
if(value < 2) return false;
for(int i = 2; i <= value / 2; i++) if(value % i == 0) return false;
return true;
}
然后可以逐个输出质数,如您的示例:
System.out.print("Prime Numbers: ");
for(int i = 0; i < array1.length; i++) {
if(primeCheck(array1[i])) System.out.print(array1[i] + ", ");
}
System.out.println("");
或者通过将质数打包成一个列表作为一个整体:
List<Integer> result = new ArrayList<>();
for(int i = 0; i < array1.length; i++) {
if(primeCheck(array1[i])) result.add(array1[i]);
}
System.out.println("Prime Numbers: " + Arrays.toString(result.toArray()));
一个功能齐全的测试项目:
import java.util.*;
public class Main {
public static void main(String[] args) {
new Main(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17 });
}
public Main(int[] array1) {
List<Integer> result = new ArrayList<>();
for(int i = 0; i < array1.length; i++) {
if(primeCheck(array1[i])) result.add(array1[i]);
}
System.out.println("Prime Numbers: " + Arrays.toString(result.toArray()));
}
private boolean primeCheck(int value){
if(value < 2) return false;
for(int i = 2; i <= value / 2; i++) if(value % i == 0) return false;
return true;
}
}
修改示例returns结果为List<Integer>
.
import java.util.*;
public class Main {
public static void main(String[] args) {
Main main = new Main();
List<Integer> result = main.getListOfPrimes(new int[] { 1, 2, 3, 4, 5, 6 });
// Print array from list
System.out.println("Prime Numbers: " + Arrays.toString(result.toArray()));
// Iterate list
for(int i: result)
System.out.println(i);
}
public List<Integer> getListOfPrimes(int[] source) {
List<Integer> result = new ArrayList<>();
for(int i = 0; i < source.length; i++) {
if(primeCheck(source[i])) result.add(source[i]);
}
return result;
}
private boolean primeCheck(int value){
if(value < 2) return false;
for(int i = 2; i <= value / 2; i++) if(value % i == 0) return false;
return true;
}
}