Мне нужны предложения о том, как сделать этот код работоспособным. Например, с этим номером: 600851475143. Это работает для меньших чисел. Любые предложения по моему коду в целом будут более чем приветствоваться. В качестве примечания: я понимаю, что политика Project Euler заключается в том, чтобы не делиться кодом для решения своих проблем, и поэтому я просто хочу, чтобы меня подтолкнули в правильном направлении, и не хочу никаких прямых ответов. Спасибо.
import java.util.List;
import java.util.ArrayList;
public class prime {
public static List factor2(long n){
List list = new ArrayList();
for (long a = 1; a < n; a++){
for (long b = n; b>1; b--){
if (a*b==n){
list.add(a);
list.add(b);
a++;
b--;
}
else{
b--;
}
}
}
return list;
}
public static List prime (long n){
Listlist = factor2(n);
ListlistPrime = new ArrayList();
for (long x : list){
if (factor2(x).size()==2){
listPrime.add(x);
}
}
return listPrime;
}
public static long largestPrime (long n){
long largest = 1;
for (long x : prime(n)){
if (x>largest){
largest = x;
}
}
return largest;
}
public static void main (String[] args){
System.out.println(largestPrime(6));
}
Мне нужны предложения о том, как сделать этот код работоспособным. Например, с этим номером: 600851475143. Это работает для меньших чисел. Любые предложения по моему коду в целом будут более чем приветствоваться. В качестве примечания: я понимаю, что политика Project Euler заключается в том, чтобы не делиться кодом для решения своих проблем, и поэтому я просто хочу, чтобы меня подтолкнули в правильном направлении, и не хочу никаких прямых ответов. Спасибо.
[code]import java.util.List; import java.util.ArrayList; public class prime {
public static List factor2(long n){ List list = new ArrayList();
for (long a = 1; a < n; a++){ for (long b = n; b>1; b--){ if (a*b==n){ list.add(a); list.add(b); a++; b--; } else{ b--; } }
}
return list; } public static List prime (long n){ Listlist = factor2(n); ListlistPrime = new ArrayList(); for (long x : list){ if (factor2(x).size()==2){ listPrime.add(x); } } return listPrime; }
public static long largestPrime (long n){ long largest = 1;
for (long x : prime(n)){ if (x>largest){ largest = x; } } return largest; }
public static void main (String[] args){ System.out.println(largestPrime(6)); } [/code]