Java 把所有的素数都加到一个点上
我现在有这个代码,但是当我输入一个数字,比如20,它返回-1,你知道为什么会发生这种情况吗?多谢各位Java 把所有的素数都加到一个点上,java,Java,我现在有这个代码,但是当我输入一个数字,比如20,它返回-1,你知道为什么会发生这种情况吗?多谢各位 public static ArrayList<Integer> prime(int num){ ArrayList<Integer> primes = new ArrayList<>(); ArrayList<Integer> nul = new ArrayList<Integer>(); nul.add(-
public static ArrayList<Integer> prime(int num){
ArrayList<Integer> primes = new ArrayList<>();
ArrayList<Integer> nul = new ArrayList<Integer>();
nul.add(-1);
for(int i = 1; i < num; i++) {
for(int j = 2; j < i - 1; j++){
if (i % j == 0) {
return nul;
}
primes.add(i);
}
}
return primes;
}
你得到-1是因为你返回nul,如果条件变为真的话。在这种情况下,您应该使用continue,在这里它将解决您的问题,但创建另一个问题,即在这里使用它将导致您的列表中出现重复条目
所以,我建议您使用一个布尔标志变量和break来获得您想要的结果。下面是一段代码片段,添加了注释以供解释
public static ArrayList<Integer> prime(int num){
ArrayList<Integer> primes = new ArrayList<>();
ArrayList<Integer> nul = new ArrayList<Integer>();
nul.add(-1);
boolean flag=true;
for(int i = 1; i < num; i++) {
flag=true;
for(int j = 2; j < i; j++){
if (i % j == 0) {
flag=false; // set it to false, if number is not prime
break;
}
}
if(flag) { // If flag was true till this point
primes.add(i); // means it is current number is prime. so add it to list
}
}
return primes;
}
你为什么返回nul;?因为你的代码逻辑是错误的。检查数字是否为素数的代码在哪里?我找不到一种方法来表示输入的数字没有素数,所以我创建了一个名为nul的数组,其中包含-1 lol im NEW请努力调试您自己的代码,因为Stackoverflow不是一个供您转储代码并为您解决问题的网站。有关此网站主题的问题种类,请参阅。